2

ユーザー入力の整数をテストするために if/else を記述しようとしています。int を入力すると、プログラムが続行されます。それ以外のものを入力すると、プログラムは正しい入力を求めるエラー メッセージを生成します。これはボールパークのどこかにありますか?

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int [] foo;
        foo = new int[3];

        foo[0]=1;
        foo[1]=2;
        foo[2]=3;

        System.out.print("Make a choice between 0 and 2: ");
        int itemChoice = keyboard.nextInt();

        if (itemChoice != foo) {  
           System.out.print("Not a valid choice");  
        }  
        else {  
           System.out.print("Valid choice. You picked " + itemChoice);
        }  
    }
}

次のエラーが表示されます。

 required: int
 found:    boolean
 test.java:17: error: incomparable types: int and int[]
        if (itemChoice != foo) {  
4

3 に答える 3

6

入力を検証するには、以下の方法を試してください。

Scanner.hasNextInt()

int itemChoice =0;
while(true){
    if(keyboard.hasNextInt()){    
        itemChoice = keyboard.nextInt();    
        // Do something.
        break;
    }
    else{    
        System.out.print("Not a valid choice Try again");
        continue;

    }

}
于 2013-05-06T15:23:13.050 に答える
1

あなたの問題は、int[](int 配列) と: を比較していることですint:

itemChoice != foo  

次のようにする必要があります。

boolean tmp = false;
for (int i=0; i < foo.length; i++) {
    if (foo[i] == itemChoice) {
       tmp = true;
    }
}
if (tmp) {
    System.out.print("Valid choice. You picked " + itemChoice);
}  
else {  
    System.out.print("Not a valid choice");  
}  
于 2013-05-06T15:30:10.990 に答える
0

のように、コードをループ内に入れてみませんwhileか?

それで:

while (my input is not a number) {
 //Here I do the block of code.
 //I can implement an if to handle the error messages
}

Scanner クラスをあまり使用していないか、同様の要件はありませんが、役立つかもしれません。よろしくお願いします。

于 2013-05-06T15:30:07.957 に答える