2012-09-27 51 views
2
import java.util.Random; 
import java.util.Scanner; 

public class Game { 
    public static void main(String[] args) { 

     System.out.println("Guess a number betwwen 1 and 1000"); 

     Random rand = new Random(); 
     int secretNumber = rand.nextInt (1000); 


     Scanner keyboard = new Scanner(System.in); 
     int guess; 

     do { 
     guess = keyboard.nextInt(); 

     if (guess == secretNumber) 
      System.out.println("You WON!!! Congratulations!"); 
     else if (guess < secretNumber) 
      System.out.println("Nope, to low"); 
     else if (guess > secretNumber) 
      System.out.println("Sorry, to high"); 


     } while (guess != secretNumber); 


    } 
} 

我怎么可以添加到这个代码的声明中,如果输入的不是数字的System.out.println(“无效输入时,请只用型数字!”)java的IF NOT语句

+1

你需要看看文档的扫描,看看它是如何报告对'nextInt'非数字输入。 –

回答

6

您应该使用ScannerhasNextInt()方法,以确定是否该输入是数字调用nextInt之前:

do { 
    while (!keyboard.hasNextInt()) { 
     System.out.println("Please enter only numbers."); 
     keyboard.next(); // Skip the wrong token 
    } 
    // Now that the input is valid, read the value: 
    guess = keyboard.nextInt(); 
    // Put the rest of your logic here 
    ... 
} while (guess != secretNumber); 
3

Scanner.nextInt()抛出 InputMismatchException如果下一个标记不匹配整数的正则表达式,邻r是超出范围

所以,你应该记住

1

这个环绕一个try-catch你的代码我想你想下面缠猜= keyboard.nextInt():

try 
{ 
    guess = keyboard.nextInt() 
    Integer.parseInt(guess); 

    <your if statements> 

    } catch(Exception ex) 
    { 
    System.out.println("Your comment"); 
    } 
0

您可以在循环中添加一个try catch块。

do { 
    try{ 
    guess = keyboard.nextInt(); 

    if (guess == secretNumber) 
     System.out.println("You WON!!! Congratulations!"); 
    else if (guess < secretNumber) 
     System.out.println("Nope, to low"); 
    else if (guess > secretNumber) 
     System.out.println("Sorry, to high"); 
    } 
catch(InputMismatchException e){ 
System.out.prinln("Not a number"); 
} 


    } while (guess != secretNumber); 
0

使用扫描仪时,您永远不会知道它是否是已输入的整数。它将等待直到输入“nextInt”。你可以做的是使用

Integer.parseInt() method。如果输入字符串不是整数,它将引发NumberFormatException。

猜测一个字符串并使用。 guess = keyboard.next();

然后在try-catch中使用Integer.parseInt(guess)来解决你的问题。

0
public class Game { 
    public static void main(String[] args) { 

    System.out.println("Guess a number betwwen 1 and 1000"); 

    Random rand = new Random(); 
    int secretNumber = rand.nextInt (1000); 


    Scanner keyboard = new Scanner(System.in); 
    int guess; 

    do { 
    if (!keyboard.hasNextInt()) { 
     System.out.println("invalid input, please use type numbers only!"); 
     return; 
    } 
    guess = keyboard.nextInt(); 

    if (guess == secretNumber) 
     System.out.println("You WON!!! Congratulations!"); 
    else if (guess < secretNumber) 
     System.out.println("Nope, to low"); 
    else if (guess > secretNumber) 
     System.out.println("Sorry, to high"); 


    } while (guess != secretNumber); 


    } 
} 
0
import java.util.Random; 
import java.util.Scanner; 

public class Game { 
    public static boolean isInteger(String input) 
    { 
     try 
     { 
      Integer.parseInt(input); 
      return true; 
     } 
     catch(Exception e) 
     { 
      return false; 
     } 
    } 

    public static void main(String[] args) { 

     System.out.println("Guess a number betwwen 1 and 1000"); 

     Random rand = new Random(); 
     int secretNumber = rand.nextInt (1000); 

     Scanner keyboard = new Scanner(System.in); 
     int guess=-1; 

     do { 
     String g = keyboard.next(); 
     if(isInteger(g)){ 
      guess = Integer.parseInt(g); 
      if (guess == secretNumber) 
       System.out.println("You WON!!! Congratulations!"); 
      else if (guess < secretNumber) 
       System.out.println("Nope, to low"); 
      else if (guess > secretNumber) 
       System.out.println("Sorry, to high"); 
     } 
     else{ 
      System.out.println("NaN"); 
     } 

     } while (guess != secretNumber); 


    } 
}