2016-04-18 9 views
1

私は学校のプロジェクトをしようとしていますが、問題があります。私のコードは次のとおりです。Java。複数の条件とブール値

public class Class { 
    public static void main(String[] args) { 
     Scanner lector = new Scanner(System.in); 
     int code = 0, i = 0; 
     boolean error = true; 
     //Start of program 
     System.out.println("Inputs ------------------"); 
     //Ask for input 
     do { 
       System.out.print("Code: "); 
       code = lector.nextInt(); 
       if (code < 0 || code > 2000) { 
        error = false; 
       } i = i + 1; 
     } while (!error || i < 3); 

     if (error) {...rest of the program 

私の問題は、私は、入力が> 0 & < 2000で、私は、ユーザーが3人の意図を超えた場合は、プログラムの実行を停止する必要がある場合は、ループを終了する必要があるということです。

非常に助かりました。ありがとうございました!

答えて

2

この

while (!error || i < 3); 

はあなたがerrorfalsei < 3ありながらループし続けたい

while (!error && i < 3); 

でなければなりません。また、i = i + 1;i++と書くことができます(またはプリインクリメント付き)。だからあなたはできます

boolean valid = false; 
do { 
    System.out.print("Code: "); 
    code = lector.nextInt(); 
    if (code > 0 && code < 2000) { 
     valid = true; 
    } 
    i++; 
} while (!valid && i < 3); 
+0

私はあなたに同意しますが、私は0を入力すると、私はループから抜け出す。 0は受け入れられません。 –

+0

'if(code < 0 || code > 2000){'は 'if(code <= 0 || code> = 2000)でなければなりません。 –

+0

いいえ、たとえば私の最初の選択肢が5番の場合、どのようにループを終了させることができますか? 5が0から2000の間であることを考慮すると、ブール値は真と宣言されます。 –