2014-10-30 128 views
-3
//Infinite Loop To make the program run continuously. 
    while (infiniteLoop == 1) { 
    pickedNumber1 = 1+randNum1.nextInt(12); 
    pickedNumber2 = 1+randNum2.nextInt(12); 

    System.out.println("What is " + pickedNumber1 + " multiplied by " + pickedNumber2 + "?"); 

    answer = (pickedNumber1 * pickedNumber2); 

    Scanner myScanner = new Scanner(System.in); 

    inputAnswer = myScanner.nextInt(); 

    if (inputAnswer == answer) { 
      System.out.println("Well done!"); 
    } else { 
      System.out.println("Please Try Again"); 
    } 
    } 

我想知道如何使用hasNextXXX方法进行用户验证。 我希望用户只能输入一个不包含任何负数或字母的整数。扫描仪验证Java输入,

+0

当用户输入字母时,它仍然不起作用。 – 2014-10-30 13:30:47

+0

看看我的答案... – brso05 2014-10-30 13:47:39

+0

这是你在找什么... – brso05 2014-10-30 13:47:55

回答

0

尝试是这样的:直到用户输入一个有效的数字大于或等于0重置您的inputAnswer到

public static void main(String[] args) { 
     int inputAnswer; 
     int pickedNumber1; 
     int pickedNumber2; 
     int answer; 
     Random randNum1 = new Random(); 
     while (true) { 

      pickedNumber1 = 1 + randNum1.nextInt(12); 
      pickedNumber2 = 1 + randNum1.nextInt(12); 

      System.out.println("What is " + pickedNumber1 + " multiplied by " 
        + pickedNumber2 + "?"); 

      answer = (pickedNumber1 * pickedNumber2); 

      Scanner myScanner = new Scanner(System.in); 
      inputAnswer = -1; 
      while (inputAnswer < 0) { 
       try 
       { 
        System.out.println("Please enter a valid number:"); 
        inputAnswer = myScanner.nextInt(); 
       }catch(Exception e) 
       { 
        myScanner.nextLine(); 
       } 
      } 

      if (inputAnswer == answer) { 
       System.out.println("Well done!"); 
      } else { 
       System.out.println("Please Try Again"); 
      } 
     } 
} 

基本上环路 - 1之前,每次用户输入循环,因此它将首先进入循环。使用try catch块来测试非数字答案。

0

这应该做的工作:

inputAnswer = myScanner.nextInt(); 
if(inputAnswer < 0) { 
    System.out.println("Invalid input, number must be positive"); 
    continue; 
} 
0

您可以先使用此 检查是否输入正确与否

if (inputAnswer < 0) 
{ 
    System.out.println("Wrong input... no. must be greater t hen zero"); 
} 
else if (inputAnswer == answer) // check weather input matches the answer 
{ 
    System.out.println("Well done!"); 
} 
else  
{ 
    System.out.println("Please Try Again"); 
} 
0

你可以做这样的事情

 Scanner myScanner = new Scanner(System.in); 
    try { 
     inputAnswer = myScanner.nextInt(); 
    } catch (Exception e) { 
     System.out.println("Please try again"); //To check if the input is not character since nextInt() throws exception when character is entered. 
     continue; 
    } 

    if (inputAnswer == answer) { //This will take care of negative numbers since answer will not be negative 
      System.out.println("Well done!"); 
    } else { 
      System.out.println("Please Try Again"); 
    } 
0

我认为这是你在找什么:

Scanner input = new Scanner(System.in); 
int val; 
if(input.hasNextInt() && (val = input.nextInt()) >= 0) 
{ 
    //do stuff 
} 
else 
{ 
    //print error message 
    //clear out the line 
    input.nextLine(); 
} 
0

试试这个......希望能帮到你。

 while (infiniteLoop == 1) { 

     int pickedNumber1 = (int) (Math.random() * 12 + 1); 
     int pickedNumber2 = (int) (Math.random() * 12 + 1); 

     System.out.println("What is " + pickedNumber1 + " multiplied by " 
       + pickedNumber2 + "?"); 
     try{ 
     int answer = (pickedNumber1 * pickedNumber2); 
     Scanner s1 = new Scanner(System.in); 
     int inputanswer = s1.nextInt(); 
      if(answer == inputanswer){ 
       System.out.println("Well Done!!"); 
       infiniteLoop=0; 

      }else{ 

       System.out.println("Wrong Answer Try Again."); 
      } 


     }catch(InputMismatchException e){ 
      System.out.println("Not a Number"); 

     } 


    }