Java 循环和在变量中存储数据有问题

Java 循环和在变量中存储数据有问题,java,loops,variables,storing-data,Java,Loops,Variables,Storing Data,我试图完成的程序需要从用户那里读入三个数字,然后将它们存储在变量num1、num2和num3中,以便在步骤2和3中使用它们。我遇到的问题是,当程序在用户输入他们的号码后循环,并试图进入第2步或第3步时,它说必须先完成第1步。 这是我目前的代码: static Scanner console = new Scanner(System.in); public static void main(String[] args) { // TODO Auto-generat

我试图完成的程序需要从用户那里读入三个数字,然后将它们存储在变量
num1
num2
num3
中,以便在步骤2和3中使用它们。我遇到的问题是,当程序在用户输入他们的号码后循环,并试图进入第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);
    }
}
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int num1;
int num2;
int num3;
int输入;
做{
布尔值opt1Done=false;
System.out.println(“选择下一步”);
System.out.println(“1:输入三个介于1和100之间的数字”);
System.out.println(“2:按升序排列您的号码”);
System.out.println(“3:确定三个输入是否形成三角形”);
System.out.println(“4:退出”);
int answer=console.nextInt();
num1=console.nextInt();
num2=console.nextInt();
num3=console.nextInt();
input=console.nextInt();
如果(答案=1){
//为选项1做任何事
System.out.println(“为num1输入一个介于1和100之间的值”);
System.out.println(“为num2输入一个介于1和100之间的值”);
System.out.println(“为num3输入一个介于1和100之间的值”);
opt1Done=true;
}否则如果(答案=2){
如果(opt1Done){
//……尽一切努力订购这些号码
int[]arraynum;
arraynum=新整数[3];
arraynum[0]=num1;
arraynum[1]=num2;
arraynum[2]=num3;
Arrays.sort(arraynum);
int i;
对于(i=0;inum3&&num1+num3>num2&&num2+num3>num1){
系统输出打印(“三角形”);
}否则{
系统输出打印(“无三角形”);
}
}否则{
System.out.println(“您必须在步骤3之前完成步骤1”);
}
如果(答案=4){
系统出口(0);
}
}
}while(输入=4);
}
}

我需要添加另一个循环还是更改已有的循环?

您不需要在指令上循环。每次完成一个步骤后,程序就会结束,下次运行时,之前所做的任何操作都不会被保存

您需要一个外部循环来迭代命令:

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
    }
}

似乎您必须循环,直到用户选择选项4。我没有看到任何包含提问选项的循环。

您将条件放在了错误的位置。 正如我所想的,首先检查用户的答案,然后将第一个条件中的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;

将布尔声明opt1Done和数字移出循环,并在每次用户提示后读取输入

 import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

public class ReadChar {

    public ReadChar() {
        // TODO Auto-generated constructor stub
    }

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

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

        int num1 = 0;
        int num2 = 0;
        int num3 = 0;
        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");

            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;
            } 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);

            }
        }
    }
}
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.array;
导入java.util.Scanner;
公共类ReadChar{
公共ReadChar(){
//TODO自动生成的构造函数存根
}
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int num1=0;
int num2=0;
int num3=0;
布尔值opt1Done=false;
while(true){
System.out.println(“选择下一步”);
System.out.println(“1:输入三个介于1和100之间的数字”);
System.out.println(“2:按升序排列您的号码”);
系统输出
.println(“3:确定三个输入是否形成三角形”);
System.out.println(“4:退出”);
int answer=console.nextInt();
如果(答案=1){
//为选项1做任何事
System.out.println(“为num1输入一个介于1和100之间的值”);
num1=console.nextInt();
System.out.println(“为num2输入一个介于1和100之间的值”);
num2=console.nextInt();
System.out.println(“为num3输入一个介于1和100之间的值”);
num3=console.nextInt();
opt1Done=true;
}否则如果(答案=2){
如果(opt1Done){
//……尽一切努力订购这些号码
int[]arraynum;
arraynum=新整数[3];
arraynum[0]=num1;
arraynum[1]=num2;
arraynum[2]=num3;
Arrays.sort(arraynum);
int i;
对于(i=0;inum3&&num1+num3>num2
static Scanner console = new Scanner(System.in);

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

        int num1 = 0;
        int num2 = 0;
        int num3 = 0;
        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");

        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;
        } 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");
            }

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

        }

        }

    }
    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);

                }
            }
         }
     }