2016-03-30 14 views
0

私は、ユーザにのみを入力してを3回入力するように.javaコードを変更するように教えています。ループを3回実行する

私が手のコードはこれです:

public static void main (String[] args) { 
     Scanner lector = new Scanner(System.in); 
     int valorUsuari = 0; 
     boolean valorNOk=true; 
     while (valorNOk){ 
      System.out.print("Insert a number between 0 and 5: "); 
      valorUsuari = lector.nextInt(); 
      lector.nextLine(); 
      if((valorUsuari >= 0)&&(valorUsuari <= 5)){ 
       valorNOk=false;  
      } 
     } 
     System.out.println("Data correct. You typed " + valorUsuari); 
    } 
} 

私はwhile条件の前にこれをやってみました、動作していないよう:

for (valorUsuari = 0; valorUsuari <= 3 ; valorUsuari++) 

は、あなたは私がどんな考えを持っていますか間違っている?

ありがとうございます!

+4

何が問題なのですか? 4回印刷していますか?エラーが発生していますか? – Gendarme

+0

ああ、3回しか試していないのですか?その後、彼はもはや入ることが許されないのですか? – Gendarme

+0

こんにちは。私はエラーは表示されませんが、3回目の挿入後に停止しません。 –

答えて

2

0から始まるカウンタを追加するだけで、3に達すると、ユーザーは番号を入力できなくなります。ユーザーが何か違法なことを書くたびに、カウンターに追加してください。

public static void main (String[] args) { 
    Scanner lector = new Scanner(System.in); 
    int valorUsuari = 0; 
    int counter = 0; //this is your counter, it starts at 0 because the user has failed 0 times at this point 
    boolean valorNOk=true; 
    while (valorNOk && counter < 3){ 
     System.out.print("Insert a number between 0 and 5: "); 
     valorUsuari = lector.nextInt(); 
     lector.nextLine(); 
     if((valorUsuari >= 0)&&(valorUsuari <= 5)){ 
      valorNOk=false;  
     } else { 
      counter++; //this is added to keep track of failed tries 
     } 
    } 
    System.out.println("Data correct. You typed " + valorUsuari); 
} 

注:これは、この時点であなたのために本当に関係ありませんが、あなたのvalorNOkはかなり冗長です。ユーザーが誤って3回入力した場合でも、あなたはまだ"Data correct..."を出力します:

public static void main (String[] args) { 
    Scanner lector = new Scanner(System.in); 
    int valorUsuari = 0; 
    int counter = 0; //this is your counter, it starts at 0 because the user has failed 0 times at this point 
    while (counter < 3){ 
     System.out.print("Insert a number between 0 and 5: "); 
     valorUsuari = lector.nextInt(); 
     lector.nextLine(); 
     if((valorUsuari >= 0)&&(valorUsuari <= 5)){ 
      break; 
     } else { 
      counter++; //this is added to keep track of failed tries 
     } 
    } 
    System.out.println("Data correct. You typed " + valorUsuari); 
} 

別のノートを:あなたは、単にこのよう代わりにbreakを使用することができます。何あなたができることはあなたのwhileループの後にこのようなものです:それを少し

if(counter < 3) { 
    System.out.println("Data correct. You typed " + valorUsari); 
} else { 
    System.out.println("Too many tries. You are bad."); 
} 
+0

人を試していただきありがとうございますが、私は終了するためにブレークまたは終了を使用することはできません。 –

+0

@ALxALxこの場合、ブール値は正常です。 – Gendarme

+0

あなたは単にそれをノックした!プログラムを終了させて​​いただきありがとうございます! –

0

を修正、私は試行を追跡するためにカウンタint triesを使用しました。

public static void main(String[] args) throws Exception { 
     Scanner lector = new Scanner(System.in); 
     int valorUsuari = 0; 
     boolean valorNOk = true; 
     int tries = 0; 
     while (valorNOk && tries < 3) { 
      System.out.print("Insert a number between 0 and 5: "); 
      valorUsuari = lector.nextInt(); 
      lector.nextLine(); 
      if ((valorUsuari >= 0) && (valorUsuari <= 5)) { 
      valorNOk = false; 
     } else { 
      tries++; 
     } 
     System.out.println("Data correct. You typed " + valorUsuari); 
    } 
+0

最初はコード内の休憩を考えていましたが、breakやexit()を使わないように私に尋ねました。 –

関連する問題