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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

3回答

1102閲覧

java配列について

tamagoegg

総合スコア0

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/08/16 07:42

編集2021/08/16 07:55

前提・実現したいこと

javaを勉強し始めた初心者です。
0~3の好きな数字を入力し、それにあった要素を取り出し表示させたいです。
1と入力すると"賢者"と返ってくるようなものを作りたいのですが、
数字を入力してもelseの空白が返ってきます。

もっときれいな書き方や分かる方、教えていただければ幸いです。

該当のソースコード

System.out.println("0から3の中で好きな数字を入力してください");
int k = new java.util.Scanner(System.in).nextInt(4);

String[] jobs = {"勇者","賢者","踊り子","商人"}; for(int i = 0; i < k; i++){ if(i==k){ System.out.println(jobs[i]); }else{ System.out.println(" "); } }
java

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

tamagoegg

2021/08/16 10:10

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

2021/08/16 10:26

いきなり全てを組み合わせないで、少しずつ動かして確認しながら作っていく方法があります。 1. まず全て取っ払って、"賢者" とだけ表示されるプログラムを作ります。配列も何も要りません。直接 println に "賢者" を渡して表示です。 2. 配列 job を加え、その配列の中の"賢者"を表示するように改造します。配列の添え字は直接数字で指定しておきます。 3. 配列の添え字を int 型変数 k にします。変数の値は println の前の行辺りで直接代入しておけば良いでしょう。 4. 変数 k への代入を scanner の nextInt に変えます。
kazuma-s

2021/08/16 15:17

質問を編集して、「ここに言語名を入力」を「java」に置き換え、その下の「java」を 「System.out.println( .... ... }」に置き換えてください。 そうすれば、どう書けばよいのかを回答します。 また、このページの下の「> ヘルプ」をクリックして、 表示されたページの右の「質問するときのヒント」をよく読んでください。
guest

回答3

0

forでループさせる必要ないのでは?冗長に思います。
入力値が数値であり、jobsが持つサイズ内であれば参照できるのですから、
その2点をチェック、Exceptionなど(
ArrayIndexOutOfBoundsExceptionなど)で逃がした上でjobs[n]を直接参照すれば済むように思います。

投稿2021/08/16 08:16

m.ts10806

総合スコア80875

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

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

tamagoegg

2021/08/16 10:17

例外な数字を入力されてExceptionのエラーが出るのは理解したのですが、job[n]を直接参照するの部分が まだわからず詰まっています。すみません、もう少しヒントをいただけないでしょうか??
m.ts10806

2021/08/16 11:35

nは任意の数値。 自身でも書かれてますよね。 System.out.println(jobs[i]); iは今回はループカウンタ。 それを「入力値」にするだけの話です。
guest

0

エラーは出ていないのですが、配列がうまく取り出せず困っています。

kが0のとき、このfor文がどうなるか考えてみましょ。1のとき、2のときも。

java

1for(int i = 0; i < k; i++){

4のときは? -1のときは?

投稿2021/08/16 07:52

編集2021/08/16 07:54
shiketa

総合スコア4061

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

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

tamagoegg

2021/08/16 08:16

for(int i = 0; i < =k; i++){ <=に変更すると表示されました!!!!!! ただ、4や-1だとエラーが出ます.... nextInt(4);にしているから0から3以外の数字を入れたからエラーが出たんだと思っているのですが、、 もっときれいな書き方があると思うのですが配列までしか勉強していない僕にはまだ早いようなことをするのでしょうか?
shiketa

2021/08/16 08:23

> ただ、4や-1だとエラーが出ます.... if文は使えていますから、kが条件の範囲に収まっていることはforで回す前にチェックできますね。 > もっときれいな書き方があると思うのですが m.ts10806さんの回答を参考に。
YT0014

2021/08/16 14:31

ご提示いただいたコード(この回答のコメントでの修正の有無に関わらず)では、-1を入力した場合にエラーの発生が確認できません。 なお、Scanner.nextInt(4)は、入力文字列を4進数として整数値に変換する、という意味なので、"-1"や"10"(10進数では4)の入力は可能です。
guest

0

Java

1for(int i = 0; i < k; i++){

Java

1for(int i = 0; i < jobs.length; i++){

の誤りでは?

投稿2021/08/16 12:06

TetsujiMiwa

総合スコア1124

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問