2015-09-25 51 views
2

我在做一个猜谜游戏,所有的代码工作正常,除了我希望他们做一个数字来猜测之间,我不能似乎弄清楚如何使它如此,以便如果用户输入一个像“d”而不是像“15”这样的数字的信件,它会告诉他们他们不能这样做。 代码:如果用户输入一个字母而不是数字告诉他们它不是一个数字

import java.util.Scanner; 
import java.util.Random; 

public class GuessingGame { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     Random rand = new Random(); 

     while (true) { 
      System.out.print("Pick a number: "); 
      int number = input.nextInt(); 

      if (number != int) { 
       System.out.println("That's not a number"); 
      } else if (number == int) { 
      int random = rand.nextInt(number); 
      break; 
     } 
    } 

     System.out.println("You have 5 attempts to guess the number or else you fail. Goodluck!"); 
     System.out.println(""); 
     System.out.println("Type 'begin' to Begin!"); 
     System.out.print(""); 
     String start = input.next(); 

     if (start.equals("begin")) { 
      System.out.print('\f'); 
     for(int i=1; i<6; i++) { 
      System.out.print("Enter a number between 1-" + number + ": "); 
      int number = input.nextInt(); 

      if (number > random) { 
       System.out.println("Too Big"); 
       System.out.println(""); 
      } else if (number < random) { 
       System.out.println("Too Small"); 
       System.out.println(""); 
      } else if (number == random) { 
       System.out.print('\f'); 
       System.out.println("Correct!"); 
       break; 
      } 

      if (i == 5) { 
       System.out.print('\f'); 
       System.out.println("You have failed"); 
       System.out.println("Number Was: " + random); 
       } 
      } 
     } else if (start != "begin") { 
      System.out.print('\f'); 
      System.out.println("Incorrect Command"); 
      System.out.println("Please Exit Console And Retry"); 
    } 
} 
} 
+0

你为什么不介绍了当你把坏的输入和地想想你要改变它会发生什么?你如何一般地阅读一些东西? – ergonaut

+0

'(number!= int)'和'(number == int)'是错误的语法。您正在使用数据类型作为变量。 – YoungHobbit

回答

1

使用尝试捕捉

例如 尝试{ INT A = sc.nextInt(); (例外e){ } catch(Exception e){ System.out.println(“not an integer”); }

1

你可以使用nextLine()代替nextInt()并检查出未来字符串,如果它matches()正则表达式[1-9] [0-9] *,然后解析符合Integer.valueOf(str)

像:

String str=input.nextLine(); 
int i=0; 
if(str.matches("[1-9][0-9]*"){ 
    i=Integer.valueOf(str); 
} else { 
    System.out.println("This is not allowed!"); 
} 

我希望它能帮助。

+1

或者,您可以'尝试'做'i = Integer.valueOf(str)'并捕获'NumberFormatException'。 – Cinnam

1

做这样的事情:

Scanner scan = new Scanner(System.in); 
while(!scan.hasNextInt()) { //repeat until a number is entered. 
    scan.next(); 
    System.out.println("Enter number"); //Tell it's not a number. 
} 
int input = scan.nextInt(); //Get your number here 
相关问题