質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Java

    14088questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

この問題がわからない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 360

e-power-ma

score 32

問3:カンマ区切りの文字列から、各項目を取得してデータ項目クラスの配列に格納するプログラムを作成する。

・条件:データ項目クラス(DataItem)を作成する。
・条件:データレコード定義を参照すること
・条件:データ項目クラスは、以下の3つのフィールドを持つ
データ名(DataName)、データ種類(DataType)、値(DataValue)

データレコード定義                
項目名            行番号    名前    生年月日
データの種類    数値    文字列    日付型
最小               1    1文字    
最大            99999    20文字

class DataItem {
           String [] DataName;
           int [] DataValue;
           boolean [] DataType;

}
public class renshu2_3{
public static void main(String[] args) {





}
}


ここまでやって、詰まってしまいました。
① DataItemクラスに、配列のフィールドを用意

② カンマ区切りの配列データを用意
③ それを格納              という手順になると考えています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ladybird

    2018/06/01 13:08 編集

    できるところまでコーディングして、それを載せ、「ここが分からない」「こういうエラーになる」などの情報を詳しく記載してください。でないと「丸投げ」という評価になります。また、Eclipseは関係なさそうなのでタグを外された方がよいでしょう。 質問するときのヒント:https://teratail.com/help/question-tips

    キャンセル

  • root_jp

    2018/06/01 13:46

    別紙を参照することってw

    キャンセル

  • mather

    2018/06/01 16:01

    mainメソッドが空欄で教えてくださいというのは完全に丸投げです。そもそも何を実現すれば課題が達成できるのかがわからないなら、もっと基礎の部分からやり直したほうがいいのではないかと思います。

    キャンセル

  • 退会済みユーザー

    2018/08/20 11:46

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+4

e-power-maさん

プログラムを勉強されているのですね。これからの日本では需要が高まっていくと思いますので、ぜひ頑張ってほしいです。

さて、恐らく質問がこのままでは、残念ながら望む回答は得られず、お説教ばかりになってしまうかと思います。(私もですが・・)
なぜならば、あなたがこの問題に対してどのように考え取り組み、どこでつっかえてしまったかが他の人に見えないからです。
先生や家庭教師の方はそれを引き出すように頑張ってくれますが、損得の効かない第3者はそこまでしてくれません。そもそもこのサイトがそういった場ではないと規定されています。

ただ、私の気まぐれを動機として、少しアドバイスというか、考え方を提示してみたいと思います。

まず、やるべきことを書き出してみてはどうでしょうか。
問題文は

引用テキストカンマ区切りの文字列から、各項目を取得してデータ項目クラスの配列に格納するプログラムを作成する。

ということですね。
ではやるべきことは、

  1. カンマ区切りの文字列を用意(もしくは取得?)する
  2. 1.の1つの文字列から各項目を分割し取り出す(これを構文解析する、パースすると言いますね)
  3. 2.で取得したデータ項目をクラスの配列に格納する

ではないでしょうか。

あなたはそれぞれに対してどう取り組み、どこで詰まっているのでしょうか?

問題を解決すべき要素に分解し、それぞれに対して対応を考えることで、「どこが分からないか」「なぜわからないか」が見えてきます。
問題を解決すべき要素に分解するためには、自分で目的を達成するまでの「手順」を考えると良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/01 16:48

    課題の丸投げになってしまっていること(そのように見えること)お詫びします。今、勉強し始めてちょうど2週間経ちます。質問を修正しましたので、よろしくお願いします。

    キャンセル

  • 2018/06/01 16:59

    質問の中で「手順」を明確に書き、それに対してどうするか考えましょう。
    これとこれとこれ、ではなく、順序立てて列挙してみてください。

    で、最初はおそらくカンマ区切り文字列の取得ですね。
    ではプログラムにカンマ区切りの文字列を渡すには、どうしたら良いと思いますか?

    キャンセル

  • 2018/06/01 17:56

    自分がカンマ区切りで思い浮かぶのが int [] test ={ x, x, x}のような形です。

    (スッキリjava,やさしいjavaを勉強して、この問題に取り組んでいます。)

    キャンセル

  • 2018/06/01 17:59

    int [] test ={ x, x, x}と作った場合、どうやってフィールドと紐づけできるのか、そこがまったくわかりません。

    キャンセル

  • 2018/06/01 18:09

    いくつか違う点があります。

    1.int [] test ={ x, x, x}は、「カンマ区切りの文字列」ではない
    「カンマ区切りの文字列」は「配列」でなく「文字列」、つまりStringです。
    例えば"1,太郎,20050101"といったものが、「カンマ区切りの文字列」ということだと思います。
    これを構文解析することになります。

    2.私の質問への回答になっていない
    先の私の質問は、「プログラムにカンマ区切りの文字列を渡すにはどうすればよいか」です。「カンマ区切りの文字列とはどういうものか」ではありません。
    質問を正しく理解することも、プログラムには非常に大切になってきます。
    ちなみにヒントは「引数」です。

    キャンセル

  • 2018/06/01 18:38

    ”質問を正しく理解することも、プログラムには非常に大切になってきます。”
    →肝に銘じます。ありがとうございます。

    引数にString型のカンマ区切りの文字列を入れ、それを配列に渡すということができそうに思います。

    キャンセル

  • 2018/06/01 19:04

    >引数にString型のカンマ区切りの文字列を入れ、
    そうですね。
    main(String[] args)
    上記の引数argsを通して、プログラムに値を渡すことができますね。
    「カンマ区切りの文字列」とはStringなので、このargsの中に入れることができます。

    >それを配列に渡すということができそうに思います。
    問題はここからです。「配列に渡す」ということはどういうことか。「配列」とは、何の配列か?
    前後しますが、あなたが編集した質問の
    >① DataItemクラスに、配列のフィールドを用意
    これは間違っています。DataItemの中に配列フィールドを用意するのではなく、DataItemクラスの配列を用意しなければならないんですね。
    なぜなら問題文で「データ項目クラスの配列に」と言っています。「データ項目クラス」=DataItemですので、DataItemの配列、つまりDataItem[]ということになります。
    ここら辺は非常に大切な概念で、「型」というものになります。この場合はDataItemが「型」で、これが「レコード」と一対一対応することになります。
    では、レコード定義を満たすようなDataItemの型はどういうものになるか、もう一度書けますか?

    キャンセル

  • 2018/06/01 20:41 編集

    String [ ] str = ( “ 1, name , 2018-6-2 “ )

    String [ ] DataItem = str; で渡せると思いました。 お忙しいと思いますが、ご確認いただけると嬉しいです。よろしくお願いします。

    キャンセル

  • 2018/06/08 18:24

    長らく放置してしまい、申し訳ありません。
    そして、これからの回答は期待しているものではないと思います。

    そもそも、本問題に取り組まれるには、今少し早いように見受けられます。
    この問題について、回答と解説をお持ちでしたら、その解説をよく読んで、分からない部分を調べていくことをお勧めします。
    これは良い悪いでなく、問題のレベルとご自身のレベルがミスマッチになってしまっているということであり、あなたを責めているのではありません。

    チャレンジはポジティブなことです。しかし、スキーでもいきなりリフトには乗らず、麓で練習するものです。

    String [ ] str = ( “ 1, name , 2018-6-2 “ )
    上記はビルドエラーになります。ぜひ、eclipse等のIDEや、javacでのビルドをしてみてください。それを解決しようとあれやこれやすることも力になります。

    String [ ] DataItem = str;
    上記は問題の前提を受けられていません。DataItemは、「データ名(DataName)、データ種類(DataType)、値(DataValue)のフィールドを持つ」ので、String[]ではありえません。

    まずは「型」という概念、Javaのプログラムの動かし方等、基本的なところを身につける必要があります。
    やさしいjavaという本を私は存じ上げてはおりませんが、実際に自分でコードを書き、それをビルドし、動かすような訓練はしていますでしょうか?
    まさに動かさなければ、プログラミングは分かるようにはなりません。

    可能であれば、勉強のために有料のサービスを利用してはいかがでしょうか。
    「java 勉強」で検索すれば、「自宅で学べる○○」等、いろいろ出てきます。
    その場合、「独習」なども出てきますが、それはあまりお勧めできません。今の状態では、間違いなく挫折をします。
    きちんとお金を支払い、間違いなくサポートしてくれる状態を作った上で、勉強にとりくんでいただければと思います。
    諦めなければ、必ず身につきます。かかる時間は個人個人違い、途中で「無駄だ、自分にはできない」と思うこともあると思います。しかし時間をかけて分かってみれば、「あれはああいうことだったのか」と悟り、それまでが無駄でなかったことが分かるようになります。

    キャンセル

  • 2018/08/12 15:37

    jjj_aaaさん、やっと問題が解けました。
    時間がかかりました。才能がないと思いますが、地道に勉強します。

    キャンセル

  • 2018/08/20 10:27

    e-power-maさん
    時間がかかっても、解ききるというのは非常にポジティブなことです。これは誰にでもできることではありません。
    パッと見の「向き不向き」は実際にありますが、「向き」だと思って誰もが信頼している人が致命的な欠陥を作りこむこともあるのがプログラミングの世界です。「不向き」だと思っても、最後は着実に勉強している人が強くなります。
    もちろん最終的にお金をもらう場合はある程度のスピードも要求されるため、どうしても作業の高速化が見込めない場合、現実としてプログラミングを諦めざるを得ない場面も出る可能性があります。しかしそれも、実際に立ち向かわなければ判断できないものです。

    偉そうに書きましたが、かく言う私自身も作業が早いわけではないし、プログラマとして向いていないのではないかと日夜悩んでいます。それでもこれまでのいろいろな業務を通じて、昔よりは多少マシになっていると思います。上を見ればキリはありません。また固執しすぎると、「人生」そのものを見失います。一歩ずつ、しかし固執しすぎず、頑張っていきましょう。

    キャンセル

+3

課題・宿題なら自分でやりましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/01 15:53

    コードを記載したので、アドバイスいただけますか。

    キャンセル

  • 2018/06/01 15:59

    では真剣にアドバイスをしますと、

    これは何も書いてないのと同じです。丸投げ状態から全く抜け出せていません。
    この設問にくるまで何を学びましたか?
    学んだことで本当に太刀打ちできない内容ですか?
    何を学んだのか我々見ている方はなにも知りません。あなたの技術力も知りません。
    問題の出所は?出所によってはそこの規約に抵触する可能性もあります。
    いずれにしても自身がやるべきものです。学校やなんかの宿題を代行するサイトではありません。

    つまり、回答を細かく言っただけですけどね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    14088questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。