1

我是 Java 新手,我正在编写这个简短的程序,您可以在其中猜测 1 到 10 之间的数字。正确的数字存储为整数。如果你猜一个较低的数字,它应该说“正确的数字更高”,如果你猜得更高,它应该说“正确的数字更低”。这是我所拥有的:

    import javax.swing.*;

public class Oppg3 {
    public static void main(String[] args) {
        int number = 7;
        int guessed = Integer.parseInt(JOptionPane.showInputDialog("Guess a number between 1 and 10"));
        while(guessed>number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a lower number."));
        while(guessed<number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a higher number."));
        JOptionPane.showMessageDialog(null, guessed + " is correct!");

    }

}

所以很明显这不会起作用,因为如果你输入一个较低的数字,它会跳到下一个数字,即使它更高,也会出现正确的结果。那么我该如何解决这个问题,以便它会检查这两个语句?抱歉解释不好。谢谢。

4

9 回答 9

3

最简单的解决方案是用ifs 替换当前的 while,并将它们都包含在

while(guessed!=number)
{
    if(guessed>number) //stuff
    if(guessd<number) //otherstuff
}
于 2012-09-17T13:45:39.020 回答
2

如果我在哪里,我会执行以下操作:

  • 我会使用一个do while循环。
  • 在方法体中,我会检查用户是否猜到了数字。
  • 如果是,恭喜用户并退出循环。
  • 否则,如果数字更高,我会相应地通知用户并允许他再试一次。
  • 否则,我会告诉用户这个数字较低,让他再试一次。

照原样,如果您的用户在第二个循环中给出了一个更大的数字,它应该告诉用户该数字是正确的,而不管值如何,这不是理想的行为。

于 2012-09-17T13:46:12.460 回答
1

while只要猜测的数字不等于正确答案,就创建一个循环,而不是两个循环。在循环内,创建if语句以检查猜测的数字是高于还是低于正确答案,并执行适当的操作。

于 2012-09-17T13:45:55.317 回答
0

尝试while在两个语句周围使用一个循环,并if分别为它们使用子句。

于 2012-09-17T13:45:50.710 回答
0

试试这个:

While (ReadNumber != guessed)
{
  //if Higher then ...show appropriate message
  //if lower then ...show appropriate message
  //ReadNumber = read Input again
}
于 2012-09-17T13:46:00.360 回答
0

用这个替换你的最后一行。

if(guessed == number){
    JOptionPane.showMessageDialog(null, guessed + " is correct!");
}

或者全部改变,

bool correct = false;
while(correct == false)
{
     if(guessed == number)
     {
      enter code here
      correct = true;
     }
     else if(guessed > number)
     {
     enter code here
     }
     //check for guessed < number
}
于 2012-09-17T13:46:09.097 回答
0

当用户没有猜到正确的数字时,您必须使用while循环。在循环内,您必须检查数字是更高还是更低。

所以程序看起来像这样:

while (the user don't guess the number){
//
if (the guessed number is higher){...}
if (the guessed number is lower){...}
//
}
于 2012-09-17T13:47:02.340 回答
0

逻辑不正确。您希望用户在每次输入错误时重新输入一个数字。这就是为什么你的循环看起来像while(guessed != number) { ... }. 在内部,您需要接受输入、验证并给出输出。

我不会在这里放正确的代码,因为最好自己发现它。

于 2012-09-17T13:47:36.443 回答
0

while如果猜测的数字不等于实际数字,请使用带有条件的外部循环。在 while 子句的主体中,您可以使用语句将大小写上下分开if。整个代码看起来像这样:

import javax.swing.*;

public class Oppg3 {
    public static void main(String[] args) {
        int number = 7;
        int guessed = Integer.parseInt(JOptionPane.showInputDialog("Guess a number between 1 and 10"));
        while(guessed!=number) {
            if(guessed>number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a lower number."));
            else guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a higher number."));
        } 
        JOptionPane.showMessageDialog(null, guessed + " is correct!");

    }

}
于 2012-09-17T13:51:23.147 回答