質問: input) { System.out.println("正解!"); } } } }
回答: このコードは3回入力するのが目的ではなく、 入力した値が配列に格納されている**3つの数字のどれかと合致するかを確認す**るのが目的です。 ``` import java.util.Scanner; public class Main { public static void main(String[] args) { int[] numbers = {3,4,9}; System.out.println("数字を一文字入力してください"); int input = new Scanner(System.in).nextInt(); for(int n : numbers) { //numbersの数字【今回だと3,4,9}が順番に n に入る if(n == input) { //nと入力値が1回でもあっていれば答えが出力される System.out.println("正解!"); } } } } ``` > > これは配列が3列あるから、三回まで入力できるのか > > > 配列が3列というのもよくわかりませんが、3回入力できません。 ``` System.out.println("数字を一文字入力してください"); int input = new Scanner(System.in).nextInt(); //ここで数値を入力 for(int n : numbers) { //省略 (配列の長さ分[今回だと3回]繰り返されるのはこのfor文の中だけです。 } ``` for文書いとけばコード全体がその分繰り返されるわけではありません。 あくまで、繰り返されるのは **for文の中だけ**です。 今回だと、System.out.println("入力してください"); も、 int input = new Scanner(System.in).nextInt(); も for文の外に書いてありますよね? なので、ユーザーには**値を1回** 入力してもらうだけです。 for文の中では値を入力してもらうことはありません。 ### 3回入力したいならこう?っていう提案 ``` import java.util.Scanner; public class Main { public static void main(String[] args) { int[] numbers = {3,4,9}; //比較用の配列は固定なので、コードの一番上(for文の外)に記述します。 for(int i = 0; i < 3; i++) { //3回入力してもらうために3回繰り返すfor文をつくります System.out.println("数字を一文字入力してください"); Scanner scan = new Scanner(System.in); //for文の最初の方で、ユーザーに入力してもらいます。 int input = scan.nextInt(); for(int n : numbers) { //for文の中にfor文を記述します。二重ループっていうやつです if(n == input) { System.out.println("正解!"); } } } } } ``` 3回入力して、しかも数値のチェックをしたいなら二重ループにする必要があるかとおもいます。 恐らく質問者さんのやりたいことはこれなのかな