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

最も簡単な解決策は、現在の while を s に置き換え、if両方を に含めることです。

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

私があなたの場所なら、私は次のことをします:

  • do whileループを使用します。
  • メソッド本体では、ユーザーが数字を推測したかどうかを確認します。
  • はいの場合、ユーザーを祝福し、ループを終了します。
  • それ以外の場合は、ユーザーにその旨を通知し、もう一度試してもらいます。
  • それ以外の場合は、数値が低いことをユーザーに伝え、もう一度試してもらいます。

そのままでは、ユーザーが 2 番目のループでより大きな数値を指定した場合、値に関係なく数値が正しいことをユーザーに通知する必要がありますが、これは望ましい動作ではありません。

于 2012-09-17T13:46:12.460 に答える
1

2 つのループの代わりにwhile、推測された数が正解と等しくない限り、1 つのループを作成します。ループ内でif、推測した数値が正解よりも大きいか小さいかを確認するステートメントを作成し、適切なアクションを実行します。

于 2012-09-17T13:45:55.317 に答える
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両方のステートメントで 1 つのループを使用しif、それらの句を個別に使用してみてください。

于 2012-09-17T13:45:50.710 に答える
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 に答える