2017-04-24 54 views
0

这是我的代码,首先我想添加一些内容,以检查用户输入是否为整数,如果输入不是整数,则程序必须提示输入另一个输入。 其次是决定是否重新运行“游戏”(程序本身,特别是while循环)以决定是/否选项。 我真的进入了基本的基本级别编程,所以任何提示将不胜感激!如何检查输入是否为整数并在最后添加命令以重新循环while循环?

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

public class Numberguessinggame2 
public static void main(String[] args) { 
//random number generator 
Random rand = new Random(); 
int round = 1; 
System.out.println("Let's play a number guessing game."); 
System.out.println("Ill pick a number between 1 and 100,"); 
System.out.println("and you try to guess it in 7 or fewer tries."); 
System.out.println("           "); 
System.out.println("Round " + round); 
System.out.println("-----"); 

    //acquire input from user 
    Scanner scanner = new Scanner(System.in); 

    //generate a number between 1 and 99 
    int number = rand.nextInt(99) + 1; 
    int guess = -1; 
    int counter = 0; 

    //prompt user for first guess 
    System.out.print("What is your first guess? "); 
    //loop until user guesses the right number 
    while (guess != number) { 
    guess = scanner.nextInt(); 
    counter++; 
     //loop until user gives 7 guesses 
     if (counter>=7){ 
     System.out.println("You didn't get the number in 7 guesses."); 
     System.out.println("I win! My number was : " + number); 
     break; } 
     if (guess<number) { 
      //guess is too low 
      System.out.print("That's too low.Try again: "); 
     if (guess<number && counter == 6) { 
      //guess is too low and has reacher the Last chance 
      System.out.print("... Last chance!"); 
    } 

    }if (guess>number) { 
        //guess is too high 
        System.out.print("That's too high.Try again: "); 
       if (guess>number && counter == 6) { 
        //guess is too high and has reached its Last chance 
        System.out.print("... Last chance!"); 
    } 

     if (guess==number) { 
      //if the guess is correct 
      System.out.println("You got it in " + counter + " guesses."); 
      System.out.println("You win! My number was : " + number); 
      round++; 

     } 


     } 
    } 
} 

}

回答

0

您可以使用NETX()代替nextInt(),未来()将返回一个String对象,你可以分析字符串使用Integer.valueOf(stringObject)为int,这种方法可以当此stringObject不是int值时返回NumberFormatException。

例如:

Scanner s = new Scanner(System.in); 
    String stringValue = s.next(); 
    int value = 0; 
    try { 
     value = Integer.valueOf(stringValue); 
    } catch (NumberFormatException e) { 
     //Code to manage this case. 
    } 

编辑: 我更新的代码,我忘了,包括try块

+0

所以我应该在哪里把它的代码?在while循环之后还是在之前? –

+0

在循环之前,因为您需要解析并检查字符串才能进行任何验证。 –

+0

你可以把它放在我的代码中吗?我试过,但事实证明,在提示输入后,代码将不会给出输入。 –