Java while循环问题

时间:2012-09-17 13:42:41

标签: java loops while-loop

我是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!");

    }

}

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

9 个答案:

答案 0 :(得分:3)

最简单的解决方案是用if替换当前的时间段,并将它们包含在

while(guessed!=number)
{
    if(guessed>number) //stuff
    if(guessd<number) //otherstuff
}

答案 1 :(得分:2)

如果我在哪里,我会做以下事情:

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

按原样,如果您的用户在第二个循环中给出一个更大的数字,它应告诉用户该数字是正确的,无论该值是多少,这都不是理想的行为。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

尝试在两个语句中使用一个while循环,并为它们单独使用if子句。

答案 4 :(得分:0)

试试这个:

While (ReadNumber != guessed)
{
  //if Higher then ...show appropriate message
  //if lower then ...show appropriate message
  //ReadNumber = read Input again
}

答案 5 :(得分: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
}

答案 6 :(得分:0)

当用户不猜错正确的数字时,您必须使用循环。在循环内部,你必须检查如果数字更高或更低。

所以程序看起来像这样:

while (the user don't guess the number){
//
if (the guessed number is higher){...}
if (the guessed number is lower){...}
//
}

答案 7 :(得分:0)

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

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

答案 8 :(得分: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!");

    }

}