【问题标题】:Having problems with my random number guess game我的随机数猜谜游戏有问题
【发布时间】:2016-03-15 16:39:36
【问题描述】:

我的 java 代码需要帮助!

希望它循环抛出所有内容,直到用户输入正确的数字。当用户输入错误的号码时,它应该说“输入不同的号码”。当用户输入正确的数字时,它应该说“恭喜你赢了”。 但在那之前它会循环并说“输入一个不同的数字”,在 5 次尝试后我希望它说“你失败了这个任务!你想再试一次吗?”

import javax.swing.*;
import java.util.Random;

public class Projekt_1 {

    public static void main(String[] args) {
        String number;
        JOptionPane.showMessageDialog(null, "Welcome to the guessing game!" + "\nYou     gonna guess a number between 1 and 20." + "\nHOPE YOU LIKE IT!:)");

        Random amount = new Random();
        int guessnumber = anount.nextInt(20);
        int random;

        number = JOptionPane.showInputDialog("Guess a number between 1 and 20");
        random = Integer.parseInt(number);

        while (random == guessnumber){
            JOptionPane.showMessageDialog(null, "You won!" + "\nYour number was" + "" + guessnumber);      
        }

        if (random < guessnumber){
            number = JOptionPane.showInputDialog("Your number is to high :(" + "\nType in a new lower number!"); 
            random = Integer.parseInt(number);
        }else if (random > guessnumber){
            number = JOptionPane.showInputDialog("Your number is to low :(" + "\nType in a higher number!"); 
            random = Integer.parseInt(number);
        }
    }
}

【问题讨论】:

    标签: java swing random while-loop


    【解决方案1】:

    那是因为你唯一的迭代语句只显示“你赢了!..etc”:

    while (random == guessnumber){    
        JOptionPane.showMessageDialog(null, "You won!" + "\nYour number was" + "" + guessnumber);      
    }
    

    将其他代码附在您的 while 循环下方,以将它们包含在 while 循环中。如果您正确地缩进代码,您应该能够发现自己的问题。这就是你要找的:

    while (random != guessnumber){
        //prompt for user input
        if (random < guessnumber){
            //Show Message "Your number is too low...
        }
        else if (random > guessnumber){
            //Show Message "Your number is too high..."
        }
        else{    //got the number
            //Show Message "you won!.."
        }
    }
    

    【讨论】:

    • 带有“you win”的 else 块将永远不会被击中,并且按照原样的代码,它只会进入一个输出相同消息的繁忙循环(因为它永远不会获得新的输入)跨度>
    • @Chris 我用 cmets 而不是长编码简化了解决方案以提高可读性。输入提示在我的代码 cmets Show Message "Your number is too low...prompt input" 中。即他将同时显示和提示,因为 op 正在使用 JOptionpane。
    • 现在提示更清楚了,但是 else 块仍然永远不会被命中
    • @LuckeGG 再看一下我的解决方案,你应该在 所有 if 语句之前提示用户。如果可行,您可以通过单击我的答案旁边的hollow looking tick 来接受我的答案。您将获得 2 个代表点作为回报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多