0

1 から 100 までの乱数を生成し、それを暗証番号として保持するプログラムを作成します。プログラムは、ユーザーが秘密の番号を推測できるかどうかをチェックします。ユーザーは、数字が見つかるまで数字を推測し続けるか、ユーザーが 0 を入力してプログラムを終了することができます。

ユーザーが推測するたびに、プログラムは次のように報告します。

  1. 高すぎる、または低すぎる (30 以上のオフ)
  2. 高値または安値 (10 ~ 30 ポイントの差)
  3. 少し高いまたは少し低い (10 ポイント未満の差)

秘密の番号が 74 で、ユーザーが 26 を入力すると、プログラムは "Way too Low" を出力します。次にユーザーが 65 と言うと、プログラムは「A Little Low」と出力します。

if ステートメントで行き詰まっています。おそらく私の構造が正しくありません。わからない 。

import java.util.Scanner;
public class SecretNumber {
    public static void main(String[] args){
        int random1, answer;
        Scanner input = new Scanner(System.in);

        random1 = (int)(Math.random()*10);
        System.out.print(random1);

        System.out.println("Guess the number");
        answer = input.nextInt();

        while(answer != 0) {

            if (answer > (random1 + 30)){

                System.out.println("Way to high");
            }
            else if ( answer > ( random1 - 30)){

                System.out.println("Way to low");

            }
            else if (answer > random1 + 10 && answer < random1 + 30){

                System.out.println("High");

            }
            else if (answer > random1 - 10 && answer < random1 - 30 ){

                System.out.println("Low");

            }
            else if ( answer > random1 + 10){

                System.out.println("A little high");
            }
            else if ( answer < random1 - 10){

                System.out.println("A little low");

            }
            else if ( answer == random1){

                System.out.println("That is correct");
                System.exit(0);
            }
            else {
                System.out.println("Guess the number");
                answer = input.nextInt();
            }
        }
    }
}
4

2 に答える 2

2

最後のelseブロックから入力を取得する行をelseを超えて(ただしループ内に)移動すると、正しく機能します。

これを実行する理由は、推測条件の1つ(「低すぎる!」など)に入り、最後のelseには決して入らないため、無限ループが発生するためです。

    while (answer !=0){

        // ommitted

        else if ( answer == random1){

            System.out.println("That is correct");
            System.exit(0);
        }

        System.out.println("Guess the number");
        answer = input.nextInt();
    }
于 2013-03-11T22:50:37.897 に答える
0

少し変更して、より良いと感じる方法でフォーマットしましたが、好みに合わせてコピーして貼り付けて再フォーマットできます。また、方法を削除して、それよりも低いまたは高いものに変更しましたが、それを元に戻すことができますあなたが好き

/*
*/
package randomnumbergame;

import java.util.Scanner;

public class Randomnumbergame 
{

public static void main(String[] args) 
{
    int random1, answer;

    Scanner input = new Scanner(System.in);

    random1 = (int)(Math.random()*100);


    System.out.println("Guess the number I am thinking of, it is between 1 and a 100 or press 0 to quite");
    answer = input.nextInt();

    while(answer != 0) 
    {

        if (answer > random1)
        {

            System.out.println("Your guess is to high");
        }
        else if ( answer > random1)
        {

            System.out.println("Your guess is to low");

        }         
        else 
        {

            System.out.println("That is correct");

        }

    System.out.println("Guess the number I am thinking of, it is between 1 and a 100 or press 0 to quite");
    answer = input.nextInt();

    }
} 
}

別のメモでは、プログラムは私のために働いていますが、私が推測しているように見えても、通常は私が正しいと言っているようです =/ 、そして私は math.random 部分が正しいことを知っています。それは私のインストラクターが私に使用するように言ったものでもあります.

于 2014-09-17T01:07:58.010 に答える