2015-09-25 55 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 
相關問題