命令提示符在执行我的java程序后挂起

时间:2016-11-07 02:21:17

标签: java

这段代码似乎没有问题(这里是):

import java.util.*;

public class NumberGuessingGame {

    static int randomNumber = (int) (Math.random() * 11);

    static Scanner userInput = new Scanner(System.in);

    static int guessedNumber = userInput.nextInt();

    public static void main(String[] args) {

        start: {

            while (guessedNumber != randomNumber) {

                System.out.println("I'm thinking of a number in my mind between 0 and 10. ");

                delay(1500);

                System.out.print("Try to guess it: ");

                if (guessedNumber == randomNumber) {

                    System.out.print("Congradulations! ");

                    delay(800);

                    System.out.println("The number really was " + randomNumber);

                } else {

                    break start;

                }
            }
        }


    }

    public static void delay(int millis) {

       try {

               Thread.sleep(millis);

           } catch (InterruptedException exp) {
       }

    }   
}

如果你不能告诉我,我是一个尝试创建基本数字猜谜游戏的初学者。所以我成功编写了它,但现在每次执行它都会发生这种情况:

prompt

它冻结了。为什么呢?

3 个答案:

答案 0 :(得分:1)

问题在于您将userInput.nextInt()调用放在静态字段的初始值设定项中;所以它会在你的类加载时被调用(并且程序暂停输入),然后它可以提示请求输入的提示。所以它看起来像是冻结了,但如果你输入一个数字,它就会继续。

在提示输入

的调用之后,您希望nextInt()调用在您的方法中

答案 1 :(得分:0)

错误是因为您的程序正在等待用户输入。根据文档,Scanning操作可能会阻止等待输入

解决方案是在需要时实现do / while和userInput以及guessedNumber。

NumberGuessingGame:

import java.util.*;

public class NumberGuessingGame {

static int randomNumber = (int) (Math.random() * 11);

static Scanner userInput;

static int guessedNumber;


public static void main(String[] args) {

        System.out.println("I'm thinking of a number in my mind between 0 and 10. ");

        do
        {


            delay(1500);

            System.out.print("Try to guess it: ");
            userInput = new Scanner(System.in);
            guessedNumber = userInput.nextInt();

            if (guessedNumber == randomNumber) {

                System.out.print("Congratulations! ");

                delay(800);

                System.out.println("The number really was " + randomNumber);

            } else {

                System.out.println("Error, try again! ");

                delay(800);

            }
        }
        while (guessedNumber != randomNumber);

}

public static void delay(int millis) {

   try {

           Thread.sleep(millis);

       } catch (InterruptedException exp) {
   }

}   

}

文档:

do-while statement

答案 2 :(得分:-1)

它可能正在等你输入一个数字。我认为它没有悬挂。它等待用户输入。尝试输入一个数字。