当前位置: 首页 > 知识库问答 >
问题:

随机猜数游戏的逻辑错误

司徒胤
2023-03-14

在这个程序中,计算机生成一个随机数(在1-100之间),用户试图猜测它。一直运行到用户正确猜出数字为止。需要打印出在正确猜测数字之前所花费的尝试总数。程序运行正常,但存在逻辑错误。当我正确猜测数字时,什么都没有打印出来;程序只是停止。

import java.util.*;
public class Problem3 {


  public static void main(String[] args) { 

    Random rand = new Random();
    Scanner console = new Scanner(System.in);

    int num = rand.nextInt(100)+1;
    System.out.println(num); //prints out the random number so I know test works correctly
    int count = 0;
    System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
    console = new Scanner(System.in);
    int guess = console.nextInt();
    while(guess != num){  //while guess is not = to number  
      if(guess < num){             //if less than num
        System.out.println("Your guess is too low"); 
        System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
        guess = console.nextInt();
        count++;
      }else if( guess > num){      //if greater than num   
          System.out.println("Your guess is too high");
          System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
          guess = console.nextInt();
          count++;
      }else{
        count++;
        System.out.println("You guessed correctly after " + count + " tries!");
    }
    }
  }

}

共有2个答案

谭宏盛
2023-03-14

当猜到正确的数字时,while循环条件变为false。这会使其他人无法访问。

编辑

下面是我如何解决你的问题。如果你发现自己在重复代码,这通常意味着有改进的机会。不仅代码更少,而且更容易阅读和理解正在发生的事情。我并不是试图窃取答案(@AmirBawab首先发现了问题),但我坚信不仅要编写有效的代码,还要编写可以由他人维护和阅读的代码。希望当你继续学习时,你会记住这一点。编码愉快!

public static void main(String[] args) {

    Random rand = new Random();
    Scanner console = new Scanner(System.in);

    int num = rand.nextInt(100) + 1;

    int count = 0;

    while (true) {
        System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
        int guess = console.nextInt();
        count++;
        if (guess < num) {
            System.out.println("Your guess is too low");
        } else if (guess > num) {
            System.out.println("Your guess is too high");
        } else {
            System.out.println("You guessed correctly after " + count + " tries!");
            break;
        }
    }

    console.close();

}
太叔英卫
2023-03-14

实际上,您永远不会进入< code>else阶段,因为当数字被猜出时,< code>while代码不会执行,因此< code>else代码也永远不会执行。在此之后,数字被猜测,因此条件为< code>false,退出< code>while循环,并< code>System.out.print祝贺消息

将它放在while循环的“末尾”:

 System.out.println("You guessed correctly after " + count + " tries!");

下面是您的代码应该是什么样子的:

while(guess != num){  //while guess is not = to number  
      if(guess < num){             //if less than num
        System.out.println("Your guess is too low"); 
        System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
        guess = console.nextInt();
        count++;
      }else{      //if greater than num   
          System.out.println("Your guess is too high");
          System.out.println("Guess the random number. The number is between 1 and 100. Enter it below");
          guess = console.nextInt();
          count++;
      }
    }

  System.out.println("You guessed correctly after " + ++count + " tries!");
 类似资料:
  • 我的程序应该要求用户猜测 0 到 100 之间的数字,但我似乎无法正确输出。目前,如果用户数大于随机数,它会打印出无限数量的“您的数字太高”。此外,如果第一个 UserGuess 很低,那么以下所有数字都将具有相同的提示:(“您的数字太低”),尽管它们实际上大于随机数。我不知道我做错了什么。任何帮助将不胜感激。谢谢!

  • 尝试用代码块c语言编写一个程序: 生成一个从的随机密码,并要求用户猜测该数字 如果用户猜测正确,则打印猜测是正确的 对于第一个猜测,如果它不正确,应该说热 如果用户的猜测越来越接近秘密,则告诉用户他正在变热 如果他的猜测离得更远的话,也可能是冷的 游戏继续,直到猜到密码 我当前的程序在猜测是热还是冷方面给出了错误的输出,也不确定我应该将vs如果有的话,或者在哪里使用 “else if”。如果不是太

  • 我在做一个数字猜谜游戏: 计算机在间隔内生成一个数字 我试着猜测它,并收到一个回复,不管它是高于/低于我的猜测,还是等于我的猜测,我赢了 有一个可以猜测的间隔,还有一个猜测尝试限制

  • 好吧,我知道这个以前有人问过,但我就是想不出哪里出了问题。以下是我的说明: “编写一个程序,生成1到1000之间的随机数。然后让用户猜猜数字是多少。如果用户的猜测值高于随机数,程序应该显示“太高,再试一次”。如果用户的猜测值低于随机数,程序应该显示“太低,再试一次”。程序应该使用一个循环,直到用户正确猜测出随机数。 还有,保持用户猜测次数的计数。当用户正确猜测随机数时,程序应该显示猜测的次数。输入

  • 我是JAVA新手,我一直在写一个数字猜谜游戏的代码,计算机从0-500的条件下选择数字:如果数字太低,用户输入0,计算机猜更低的数字;如果数字太高,用户输入1,计算机猜更高的数字 以5个猜测结束游戏 任何建议都将不胜感激!!!:d