2017-10-25 3 views
1
public static int promptUser(Scanner in, String prompt, int min, int max) { 
    int userTempVal = 0; 

     do { 
     userTempVal = in.nextInt(); 
      if (userTempVal < min || userTempVal > max) { 
      System.out.println(prompt); 
      } 

     }while (userTempVal < min || userTempVal > max); 

    return userTempVal; 
    } 

これは私の現在のコードです。私は基本的にユーザーの入力をスキャンし、minとmaxの間の整数であることを確認する必要があります。 minとmaxの間の整数でない場合は、プロンプトを表示し、新しいintをスキャンします。ユーザーがintのほかに何かを入力すると、私の現在のコードは失敗します(doubleまたはstring)。入力がintでないときにプロンプ​​トを表示してdo whileループを続行するコードを取得するにはどうすればよいですか?これは私が服用しているクラスのためのもので、インストラクターはhasNextInt()関数を使ってこれを説明できると示唆していましたが、使用するたびに動作しないか、エラーが発生します。助けてください、私は初心者プログラマーです! (持っている次のInt()パラメータを使用)スキャナーの理解と使用の助けが必要です。hasNextInt()

EDIT:

public static int promptUser(Scanner in, String prompt, int min, int max) { 
     int userTempVal = 0; 

      do { 
      userTempVal = in.nextInt(); 
       if (userTempVal < min || userTempVal > max || !in.hasNextInt()) { 
       System.out.println(prompt); 
       } 
      }while (userTempVal < min || userTempVal > max || !in.hasNextInt()); 

     return userTempVal; 
     } 

私はこのエラーを取得する - 私はint型を入力すると>、プログラムが実行を停止。私は文字列を入力する場合: Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at MineTest.promptUser(MineTest.java:60) at MineTest.main(MineTest.java:24)

+0

"講師は、私たちがhasNextInt()関数を使ってこれを説明できると暗示しましたが、使用するたびに動作しないか、エラーが発生します。あなたはどんなエラーを出していますか? 「うまくいかない」とはどういう意味ですか? – Pshemo

+0

'hasNextInt()'が 'true'であることを確認することは、' nextInt() 'の後続呼び出しが' int'を正常に返すようにする正しい戦略です。それは働くことができます。どのように使用しようとしたのか教えていただけますか? –

+0

私はhasNextInt()を使うと編集して自分のコードやエラーを投稿します – punchkey

答えて

0

お願いします。

+0

ありがとうございます!これは動作しますが、複数の単語である文字列を入力すると、プロンプトが3回出力されます。これをどうすれば解決できますか? – punchkey

+0

私はin.nextLine()にin.next()を変更しました! – punchkey

-1

はこれを試してみてください:

import java.util.*; 
public class Main { 
    public static void main(String[] args) { 
     System.out.println("Correct Number: " + promptUser(new Scanner(System.in), "give corret number", 10, 20)); 
    } 

    public static int promptUser(Scanner in, String prompt, int min, int max) { 
     int userTempVal = 0; 

     do { 
      if(in.hasNextInt()) { //Check if next input is an Integer 
       userTempVal = in.nextInt(); 
       if (userTempVal < min || userTempVal > max) { //Check boundaries 
        System.out.println(prompt); //Print promt 
       } 
      } 
      else { 
       in.next(); // Get the next() Object out of Buffer 
       System.out.println(prompt); //Print promt 
      } 
     }while ((userTempVal < min || userTempVal > max)); // While is out of bounds 
     return userTempVal; 
    } 
} 

をご質問がある場合は、ちょうどあなたが無効な入力を消費するin.next()を使用する必要が

関連する問題