2017-04-17 18 views
0

私はgetIntメソッドを使ってユーザーが正の数を入力するプログラムを作成しようとしています。私は、これは、これまでJavaでwhileループを終了する

public class Binary { 
    public static void main(String [ ] args) { 
    Scanner CONSOLE = new Scanner(System.in); 
    int decimal=getInt(CONSOLE, "Enter a positive integer: "); 

    } 

    public static int getInt(Scanner CONSOLE, String prompt) {      
    System.out.print(prompt); 
    while (!CONSOLE.hasNextInt()) { 
    CONSOLE.next();       
    System.out.println("Not an integer; try again.");       
    System.out.println(prompt); 
    } 
    int posInt=CONSOLE.nextInt(); 
    while (posInt <= 0) { 
    System.out.println("Not a positive integer; try again."); 
    CONSOLE.next(); 
    System.out.println(prompt); 
    } 
    return CONSOLE.nextInt(); 
    } 

}  

問題は、ユーザーが正の数を入力しない場合、それはまだ入力を無視し、再び正の整数を入力するようユーザに要求することを発生しています。私はちょうどループを正しく終了していないと思いますが、私はどのようにわからないのですか。

+1

'return CONSOLE.nextInt();'行は、既に入力していても、別の整数を入力するように促すようです。 –

答えて

2

あなたの問題は、あなたの方法の終わりにreturn CONSOLE.nextInt();

である、あなたはもう一度入力を要求CONSOLE.nextInt()を呼んでいます。

返信posInt、あなたは問題ありません。運のベスト

、他の人と同様にHTH

+0

私はそれをやってみたが、それは私に同じ問題を与え続けた。 –

0

あなたがposIntを返すことができ、あなたは問題ないはずと述べました。入力が前に無効だった場合、このコードは最初から入力を再評価します

public static int getInt(Scanner CONSOLE, String prompt) { 
    //initialize vars 
    boolean valid = false; 
    int posInt = 0; 
    //while the input is not valid, loop over the evaluation 
    while(!valid){ 
     System.out.print(prompt); 
     if (!CONSOLE.hasNextInt()) { 
      CONSOLE.next(); 
      System.out.println("Not an integer; try again."); 
      //"continue" stops the loop here and starts it from the beginning 
      continue; 
     } 
     posInt=CONSOLE.nextInt(); 
     if (posInt > 0) { 
      //valid = true will get us out of the loop 
      valid = true; 

     }else { 
      System.out.println("Not a positive integer; try again."); 
     } 

    } 
    return posInt; 
} 


は、しかし、私はあなたのgetInt方法についていくつかの提言を持っています。
コードに負のintを入力すると、番号を再入力するよう求められます。
しかし、既にwhile (posInt <= 0)ループに入っているので、実際に有効な入力を入力したかどうかは再確認しません。

私が提供したコードは、有効であるとわかるまで、最初から次の入力を再評価します。

+0

これはうまくいった!説明をありがとうございました –

+0

@ElizabethFloresこの答えがあなたのためにうまくいけば、同様の問題を抱えている他の人が解決策を見つけやすくするために私の答えをアップしてマークしてください。 喜んで助けることができます=) – DShade

+0

私はそれを最善の答えとしてどのようにマークしますか?これはこれで私の最初の投稿だったので、私は初心者です –

関連する問題