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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Q&A

解決済

5回答

1550閲覧

java基本文法 クラス、メソッド、継承

RyokiOkukawa

総合スコア6

Java

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

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

0グッド

2クリップ

投稿2020/02/05 00:43

前提・実現したいこと

現在Javaを勉強中で躓いてしまったのでご教授ください、、、

問題

Java

1//問題文:次のコードと実行結果を見て、穴を埋めよ。なおItemクラスのaddメソッド で登録可能無文字列の数は10とする 2 3class Item{ 4 String[] kind; 5 int n; 6 Item(){ 7 kind = new String[10]; 8 } 9 void add(String kind){ 10 if(n<10){ 11 ?????????????? //?部分の穴埋め 12 } 13 } 14 void showKind(){ 15 for(????????????){  //?部分の穴埋め 16 System.out.println(kind[i]); 17 } 18 } 19} 20class Test409e{ 21 public static void main(String[] args){ 22 Item i =new Item(); 23 i.add("bomb"); 24 i.add("gun"); 25 i.showKind(); 26 } 27} 28 29//実行結果:bomb gun

試したこと

全く問題の意味がわかりません、、、この問題を解けるようになるにはどのような考え方をすればいいのでしょう、、、
丸投げ質問のようになってしまってごめんなさい。
ヒントだけでも嬉しいです。
そもそもまだJavaへの理解が浅いのに身の丈にあってない問題を解いている感は否めませんがすっきりしないので質問させて戴きます。
たくさんの方々から丸投げ質問との指摘があった場合は削除させて戴きます。

補足情報(FW/ツールのバージョンなど)

Java1.8.0

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

本当に何一つ手がつけられないのでしたらもっと序盤の基本部分からやり直してみると見えてくることはあるのではないでしょうか。
これまで学んだことに必ず繋がるものがあるはず。

「ヒントだけでも」と仰いますが、「実行結果」が大きなヒントです。
これ以上踏み込むとほぼ答えになりますしご自身のためになりません。

投稿2020/02/05 00:53

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyokiOkukawa

2020/02/09 13:18

また基礎からやり直しました!ありがとうございます!
m.ts10806

2020/02/09 21:26

>また基礎からやり直しました! 基礎からやり直し済みと?いうことでしたらやり直せてないと思います。
guest

0

ベストアンサー

全く問題の意味がわかりません、、、この問題を解けるようになるにはどのような考え方をすればいいのでしょう、、、

この問題の意味を理解するには、「このコードが何をしようとしているのか?」を理解する必要があります。
いきなり全部を理解しようとせず、以下の手順のように順を追って理解していくのが良いと思います。

1. 問題文のコードで分からない Java の文法がないか確認して、もし分からないところがあればそれについて調べる。

2. Item クラスの細かい内容のことは一旦忘れる。main メソッドの処理と実行結果に注目して、このプログラムが何をしているのか推測する。(メソッド名や引数名から何となく分かるはず)

java

1class Item{ 2 void add(String kind) 3 void showKind() 4} 5class Test409e{ 6 public static void main(String[] args){ 7 Item i =new Item(); 8 i.add("bomb"); // ★これは何をしている? 9 i.add("gun"); // ★これは何をしている? 10 i.showKind(); // ★これは何をしている? 11 } 12}

3. Item クラスのメンバ変数とメソッドの引数が何に使うものなのか推測する。

java

1class Item{ 2 String[] kind; // ★これは何に使う? 3 int n; // ★これは何に使う? 4 5 void add(String kind){ // ★これは何に使う? 6 if(n<10){ 7 ?????????????? //?部分の穴埋め 8 } 9 } 10 void showKind(){ 11 for(????????????){  //?部分の穴埋め 12 System.out.println(kind[i]); 13 } 14 } 15}

4. add メソッドと showKind メソッドでやるべき処理が分かったら、それを Java で実装する。もし java の文法が分からなかったら調べる。


このようにすれば、「自分がどこまで理解できて、どの部分が理解できていないのか」を把握しやすくなります。
もし分からない部分があったとしても、その部分だけを質問すれば「丸投げの質問」にはならずに済みます。

投稿2020/02/05 01:35

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyokiOkukawa

2020/02/09 13:18

丁寧にありがとうございます!一つ一つ理解していきます!
guest

0

「身の丈にあってない問題を解いている」のだと思います。
既にある問題が自分の身の丈に合わせて変化してくれたりしませんから、Javaに関する知識を身に着けて問題を解けるようになるしか解決方法は無いです。

 タイトルに「はじめての」とか「初心者」とかを含んでいるJavaの教科書やMookを買ってきて、じっくり読んでください。
じっくりというのは、先走ってページを飛ばしたり、例題を解かずに済ませたりしないでという意味です。

 学問に王道なし!、です。

投稿2020/02/05 01:40

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyokiOkukawa

2020/02/09 13:17

ありがとうございます!!精進します!!
guest

0

こんな感じでよろしいでしょうか?

Java

1void add(String kind){ 2 if(n<10){ 3 this.kind[n] = kind; 4 n++; 5 } 6} 7void showKind(){ 8 for(????????????){  //Javaのfor文の仕様わすれましたが、n回分for分回すだけかと... 9 System.out.println(kind[i]); 10 } 11}

投稿2020/02/05 00:50

編集2020/02/05 02:51
stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetutetu

2020/02/05 01:04 編集

(前提として低評価入れたのは私じゃないです) コメントの通りthisは必要です。 『また、kind[n]に文字列を入れる前に文字数が10文字以下かどうかを判定する必要があります。』 ↑読み違えておりました。判定必要ありません。失礼しました。 showKindの方ですが、10回分回したらnullが出力されるかと思います。 (そもそもprintlnしてる以上質問本文の実行結果にならない気もしますが)
stdio

2020/02/05 02:50

> コメントの通りthisは必要です。 はやり必要でしたか... 最近触ってないから、Javaのその辺の細かい仕様すっかり忘れていたわ。 > showKindの方ですが、10回分回したらnullが出力されるかと思います。 あ、本当だ。間違えた。n回でしたね.. 実行したらデフォルトで入っている空白が入るだけなので、この場合何ら問題にはなりませんが... 個人的にはこれは質問者本人が気が付かないといけない初心者向けの課題ですね^^ 私もたまに引っかかります。何年プログラムやっても間違える時は間違える。
tetutetu

2020/02/05 04:05 編集

>実行したらデフォルトで入っている空白が入るだけなので Stringのデフォルト値はnullなので bomb gun null null...になります…。 (大喜利回答でない限り)for文の条件で出力しないように記述する必要がありそうなので n回以外だと問題が起こりそうです。 >個人的にはこれは質問者本人が気が付かないといけない初心者向けの課題ですね^^ 私個人としてはこの質問者様が解いている課題全体(前回の質問含め)がそもそも学習に適さないんじゃないかなと思ってます…。 配列に値を入れる方法だったりfor文の書き方を学習するのに(推測でしかないですが) わざわざ別クラス、メソッドを使う必要がないですし メンバ変数のintが初期値0だとか学ぶ段階じゃない気がします。 追記:ついでに実行結果は半角ブランク区切りなのに コードがprintlnなんですよね。 問題の作りが甘い(雑な)気がしてならないです。
stdio

2020/02/05 05:04

> 私個人としてはこの質問者様が解いている課題全体(前回の質問含め)がそもそも学習に適さないんじゃないかなと思ってます…。 私は前回の質問を知りませんが、この問題は確かに学習するというよりは、機械的に覚えさせているだけの問題のように感じます。もっと自分から動こうとする課題でないと、学ぶ意味がない。 > 追記:ついでに実行結果は半角ブランク区切りなのに コードがprintlnなんですよね。 初心者向けの教材なんてみんなこんな物ですよ。私もC++習ってた時、なぜかprintfで出力してましたから。今思えばアホかと思います。おかげで今でもたまに使っちゃう^^
RyokiOkukawa

2020/02/09 13:19

ありがとうございます!!
guest

0

前提:addメソッドで配列に入れるたびにn++(stdio様の回答を想定)

java

1 void showKind(){ 2 for(;;) {break;}for(int i=0;i<n;i++) {System.out.print(kind[i] + " ");} for(int i=0;i==1;){//?部分の穴埋め 3 System.out.println(kind[i]); 4 } 5//実行結果:bomb gun

(大喜利感)

投稿2020/02/05 01:23

tetutetu

総合スコア419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyokiOkukawa

2020/02/09 13:18

ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問