-1

是的,这是一个家庭作业问题。我是编程初学者。我擅长将 if/else 与 for 循环一起使用,因为我的教授要求我们使用 while 循环。我很困惑。这是问题...

Q1) 假设你正在编写一个涉及 2 位数字的游戏程序,每个数字由 2 个不同的数字组成。测试是否接受按顺序输入的数字在此游戏中使用。测试输入中的错误(包括类型)。

我的 while 循环检查数据类型起初工作正常,但在输入 int 后,我​​无法检查数据类型。任何人都可以向我解释这个问题吗?谢谢...

public static void main(String[] args){

int num = 0;

Scanner input = new Scanner(System.in);
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");

while(!input.hasNextInt()){
  System.out.println("Not an integer,try again " + num);
  input.next();
 }
num = input.nextInt();


while(num != 0){

while(num < 10 || num >= 99){
 System.out.println("NOT good for your game! " + num );
 System.out.println("Enter a 2-digit number. The digits should be different. Zero to stop");
  num = input.nextInt();
    }

 System.out.println("Good for your game! Play! " + num);
   num = input.nextInt();
    }
 } 
}
4

2 回答 2

0

while 循环首先检查 System.in 是否输入数字(int):while(!input.hasNextInt())但是当您第一次输入数字时,循环退出并进入接下来的 2 个循环:

while(num != 0){
    while(num < 10 || num >= 99){

然后在内部循环的最后你有:

num = input.nextInt();

这意味着您已经假设下一个输入将是一个 int。所以如果你输入一个非数字的输入,程序会抛出一个异常。

我建议您将整个循环更改为:

public static void main(String[] args) {

    int num = 1;

    Scanner input = new Scanner(System.in);
    do {
        System.out.println("Enter a 2-digit number. The digits should be different. zero to stop");
        if (!input.hasNextInt()) {
            System.out.println("Not an integer,try again " + num);
        } else {
            num = input.nextInt();
            if (num < 10 || num >= 99) {
                System.out.println("NOT good for your game! " + num);
            } else {
                System.out.println("Good for your game! Play! " + num);
            }
        }
    } while(num != 0);

    input.close();
    System.out.println("game stop");
}
于 2015-02-10T18:07:48.667 回答
-1
import java.util.Scanner; 

public class Number1 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in); 
    String prompt = "Enter a 2-digit number. The digits should be different. Zero to stop:";

    getInt(sc,prompt);

}


public static void getInt(Scanner sc,String prompt) {

    System.out.println(prompt);
    int num;

    while (!sc.hasNextInt())
    {
        System.out.println("Not an integer, Try again");
        sc.next();
    }

    num = sc.nextInt();

    while(num != 0) {
        if (num < 10 || num >= 99 || num == 0)
        {
            System.out.println("Not good for your game!");
        } 
        else 
        {
            System.out.println("Good for your game! Play!");
        }

        System.out.println(prompt);
        num = sc.nextInt();

    }

 }  

}

于 2016-02-10T06:58:47.640 回答