0

私が終了しようとしているプログラムは、ユーザーから 3 つの数字を読み取り、それらを変数num1に格納して、ステップ 2num2num33 で使用できるようにする必要があります。私が抱えている問題は、プログラムが後にループするときですユーザーが番号を入力してステップ 2 または 3 に進もうとすると、最初にステップ 1 を完了する必要があると表示されます。
これは今の私のコードです:

    static Scanner console = new Scanner(System.in);

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int num1;
        int num2;
        int num3;
        int input;

        do {
            boolean opt1Done = false;
            System.out.println("Select your next step");
            System.out.println("1: Enter three numbers between 1 and 100.");
            System.out.println("2: Order your number in ascending order");
            System.out.println("3: Determine if the three inputs form a triangle");
            System.out.println("4: Exit");

            int answer = console.nextInt();
            num1 = console.nextInt();
            num2 = console.nextInt();
            num3 = console.nextInt();
            input = console.nextInt();

            if (answer == 1) {
                //do whatever for option 1
                System.out.println("Enter a value for num1 between 1 and 100.");
                System.out.println("Enter a value for num2 between 1 and 100.");
                System.out.println("Enter a value for num3 between 1 and 100.");

                opt1Done = true;
            } else if (answer == 2) {
                if (opt1Done) {
                    //...... do whatever to order the numbers
                    int[] arraynum;
                    arraynum = new int[3];

                    arraynum[0] = num1;
                    arraynum[1] = num2;
                    arraynum[2] = num3;

                    Arrays.sort(arraynum);

                    int i;

                    for (i = 0; i < arraynum.length; i++) {
                        System.out.println("num:" + arraynum[i]);
                    }

                } else {
                    System.out.println("you must complete Step 1 before Step 2");
                }
            } else if (answer == 3) {
                if (opt1Done) {
                    //... do whatever to determine if triangle or not
                    if (num1 + num2 > num3 && num1 + num3 > num2 && num2 + num3 > num1) {
                        System.out.print("TRIANGLE");
                    } else {
                        System.out.print("NO TRIANGLE");
                    }
                } else {
                    System.out.println("you must complete Step 1 before Step 3");
                }
                if (answer == 4) {
                    System.exit(0);

                }
            }
        } while (input != 4);
    }
}

別のループを追加するか、既にあるループを変更する必要がありますか?

4

6 に答える 6

0

ロジックに while ループを追加して並べ替えるだけで済みました。

    boolean opt1Done = false;
    int num1, num2, num3;
  while(answer != 4){


  System.out.println("Select your next step");
    System.out.println("1: Enter three numbers between 1 and 100.");
    System.out.println("2: Order your number in ascending order");
    System.out.println("3: Determine if the three inputs form a triangle");
    System.out.println("4: Exit");

    int answer = console.nextInt();


    if (answer == 1) {
        //do whatever for option 1
        System.out.println("Enter a value for num1 between 1 and 100.");
        num1 = console.nextInt();
        System.out.println("Enter a value for num2 between 1 and 100.");
        num2 = console.nextInt();
        System.out.println("Enter a value for num3 between 1 and 100.");
        num3 = console.nextInt();
    opt1Done = true;
  }

                                    ...


       if (answer == 4) {
                    System.exit(0);

                }
            }
         }
     }

あなたの問題は、ループするたびに、ブール変数を再宣言して false に設定することでした。さらに、console.nextInts() が間違った場所にありました。answer の開始値が null であり、したがって 4 に等しくないため、この場合も do while は必要ありません。

于 2015-04-16T13:31:29.963 に答える
0

指示をループしません。ステップが完了するたびに、プログラムが終了し、次に実行するときに、以前に行ったことは何も保存されません。

コマンドを反復するには、外側のループが必要です。

public static void main(String[] args) {

    int num1;
    int num2;
    int num3;

    boolean opt1Done = false;

    while (true) {

        System.out.println("Select your next step");
        System.out.println("1: Enter three numbers between 1 and 100.");
        System.out.println("2: Order your number in ascending order");
        System.out.println("3: Determine if the three inputs form a triangle");
        System.out.println("4: Exit");

        //rest of your code here
    }
}
于 2015-04-16T13:18:54.127 に答える
0

ユーザーがオプション 4 を選択するまでループする必要があるようです。質問をするオプションを含むループは見当たりません。

于 2015-04-16T13:19:08.757 に答える
0

あなたは間違った場所に状態を置いています。私は考えているので、最初にユーザーからの回答を確認してから、最初の条件内のこれらの3つの数字を

int answer = console.nextInt();
    if (answer == 1) {
        //do whatever for option 1
        System.out.println("Enter a value for num1 between 1 and 100.");
        num1 = console.nextInt();
        System.out.println("Enter a value for num2 between 1 and 100.");
        num2 = console.nextInt();
        System.out.println("Enter a value for num3 between 1 and 100.");
        num3 = console.nextInt();
        opt1Done = true;
   }

この行をループの外に移動します

 boolean opt1Done = false;
于 2015-04-16T13:19:41.647 に答える