Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我点击";“运行”;它一直在加载,没有运行或停止的迹象_Java - Fatal编程技术网

Java 我点击";“运行”;它一直在加载,没有运行或停止的迹象

Java 我点击";“运行”;它一直在加载,没有运行或停止的迹象,java,Java,这是我的代码,当我尝试运行它时,它基本上会被卡在这里: 欢迎来到Java博士。 工作目录是U:\Downloads 玩猜谜游戏 如何将此问题修复到可以正常运行程序而不会出现上述错误的位置?我看到两个错误 import java.util.Random; import java.util.Scanner; public class GuessingGame { public static void main (String [] args) { Random rand = new

这是我的代码,当我尝试运行它时,它基本上会被卡在这里:

欢迎来到Java博士。 工作目录是U:\Downloads 玩猜谜游戏

如何将此问题修复到可以正常运行程序而不会出现上述错误的位置?

我看到两个错误

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

public class GuessingGame {

  public static void main (String [] args) {

    Random rand = new Random ();
    int numberToGuess = rand.nextInt (100);
    int numberOfTries = 0;
    Scanner input = new Scanner (System.in);
    int guess;

    boolean win = false;

    while (win == false); {

      System.out.println("Guess a number between 1 and 100:");
      guess = input.nextInt (); 
      numberOfTries++;

      if (guess == numberToGuess) {
        win = true;
      }

      else if (guess > numberToGuess) {
        System.out.println ("You guessed too low mate!");
      }

      else if (guess > numberToGuess) {
        System.out.println ("You guessed too high mate!") ;

        System.out.println("You win!!");
        System.out.println("The random number WAS!" + numberToGuess);
        System.out.println("It took you a wopping" + numberOfTries + "TRIES!");

      }
    }
  }
} 
应该是

while (win == false); {
  else if (guess > numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
(或
而(!win){
),因为分号创建了一个空循环体。和

while (win == false) {
应该是

while (win == false); {
  else if (guess > numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
else if(猜测
或者您在更高版本上有两个测试(这种方法很有意义)。

我看到两个bug

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

public class GuessingGame {

  public static void main (String [] args) {

    Random rand = new Random ();
    int numberToGuess = rand.nextInt (100);
    int numberOfTries = 0;
    Scanner input = new Scanner (System.in);
    int guess;

    boolean win = false;

    while (win == false); {

      System.out.println("Guess a number between 1 and 100:");
      guess = input.nextInt (); 
      numberOfTries++;

      if (guess == numberToGuess) {
        win = true;
      }

      else if (guess > numberToGuess) {
        System.out.println ("You guessed too low mate!");
      }

      else if (guess > numberToGuess) {
        System.out.println ("You guessed too high mate!") ;

        System.out.println("You win!!");
        System.out.println("The random number WAS!" + numberToGuess);
        System.out.println("It took you a wopping" + numberOfTries + "TRIES!");

      }
    }
  }
} 
应该是

while (win == false); {
  else if (guess > numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
(或
而(!win){
),因为分号创建了一个空循环体。和

while (win == false) {
应该是

while (win == false); {
  else if (guess > numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
else if(猜测

或者你有两个更高级别的测试(这种方式很有意义)。

详细说明Elliott的答案:

  else if (guess < numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
相当于

while (win == false); {
    // etc. etc. etc.
}
这和

while (win == false)
     ;  // empty statement, does nothing
{
    // The body, which really isn't part of the while loop any more
}

由于
win
false
开始,这将继续循环,什么也不做,直到
win
以某种方式更改为
true
,这当然永远不会发生。这就是程序陷入困境的原因——它处于无限循环中。

详细说明Elliott的答案:

  else if (guess < numberToGuess) {
    System.out.println ("You guessed too low mate!");
  }
相当于

while (win == false); {
    // etc. etc. etc.
}
这和

while (win == false)
     ;  // empty statement, does nothing
{
    // The body, which really isn't part of the while loop any more
}

由于
win
false
开始,这将继续循环,什么也不做,直到
win
以某种方式更改为
true
,这当然永远不会发生。这就是为什么程序被卡住了——它处于无限循环中。

修改
while
阻塞为
执行while
阻塞为fo追随

while (win == false) { 
}

{
    // The part that isn't really part of the loop
}
do{
System.out.println(“猜一个介于1和100之间的数字:”);
guess=input.nextInt();
numberofthries++;
如果(猜测==数字猜测){
赢=真;
}
else if(猜测<数字猜测){
System.out.println(“你猜得太低了,伙计!”);
}
否则如果(猜测>数字猜测){
System.out.println(“你猜得太高了,伙计!”);
System.out.println(“你赢了!!”;
System.out.println(“随机数为!”+numberToGuess);
System.out.println(“它花了你一个惊喜”+numberofthries+“thries!”);
}
}while(win==false);

while
块修改为
执行while
块,如下所示

while (win == false) { 
}

{
    // The part that isn't really part of the loop
}
do{
System.out.println(“猜一个介于1和100之间的数字:”);
guess=input.nextInt();
numberofthries++;
如果(猜测==数字猜测){
赢=真;
}
else if(猜测<数字猜测){
System.out.println(“你猜得太低了,伙计!”);
}
否则如果(猜测>数字猜测){
System.out.println(“你猜得太高了,伙计!”);
System.out.println(“你赢了!!”;
System.out.println(“随机数为!”+numberToGuess);
System.out.println(“它花了你一个惊喜”+numberofthries+“thries!”);
}
}while(win==false);

您错过了第二个错误。这仍然有两个关于
guess>numberToGuess
的测试。您错过了第二个错误。这仍然有两个关于
guess>numberToGuess
的测试。