有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查输入是否为整数,并在最后添加一个命令来重新启动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++;

        }


        }
    }
}

}


共 (1) 个答案

  1. # 1 楼答案

    您可以使用netx()代替nextInt(),next()将返回一个String对象,您可以使用Integer将该字符串解析为int。valueOf(stringObject),当此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块中包含