在java中使用循环时遇到问题

在java中使用循环时遇到问题,java,arrays,loops,if-statement,Java,Arrays,Loops,If Statement,我试图让我的代码在用户完成其中一个选项后循环回程序的开头。我似乎不知道如何使它正常工作。这是到目前为止我的代码 static Scanner console = new Scanner(System.in); public static void main(String[] args) { // TODO Auto-generated method stub int num1; int num2; int num

我试图让我的代码在用户完成其中一个选项后循环回程序的开头。我似乎不知道如何使它正常工作。这是到目前为止我的代码

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

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

        int num1;
        int num2;
        int num3;

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

        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");
            }
        }
    }
}
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int num1;
int num2;
int num3;
布尔值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();
如果(答案=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”);
}
}
}
}

基本上,我需要它,以便在用户输入2并完成选项2后,程序将返回到开头,再次要求选择用户想要的选项。我怎样才能让它正常工作?此外,如果代码有任何其他问题,我没有看到,请让我知道。谢谢

您需要的是将这整组代码放入while循环中,该循环将始终为真,并在最后再次请求用户输入。如果用户按4,我认为是退出,只需使用while循环中的break退出程序。

您可以尝试类似的方法

Boolean p = true;
while(p){
        System.out.println(
            " Select an option:\n" +
            "1: Enter three numbers between 1 and 100.\n" +
            "2: Order your number in ascending order\n"+
            "3: Determine if the three inputs form a triangle\n"+
            "4: Exit\n"
         );
         switch(){
           case 1:
                .
                .
                .
           case 4:
               System.exit();
          }
}

只需将您的代码放入while(true)循环中,并在输入中设置一个中断条件。在Ractive的答案中演示的do-while循环是最好的解决方案。do while确保代码至少执行一次。底部的while条件导致代码循环。对于while条件,我建议您使用
while(scanner.next().equalsIgnoreCase(“y”)
。允许用户输入小写或大写y,循环仍然有效。如果您有任何问题,请务必询问em,并在询问时标记我。好的,因此我尝试了do while循环,但扫描仪上出现错误,表示扫描仪无法解决问题@JohnnyCoder@Will你能编辑并发布你放在循环中的代码吗?是正确的,但是,将此代码放在一个单独的方法中并从循环中调用该方法会更干净。选项4可以执行
系统。退出
Yes@ScaryWombat您是对的。。获取用户输入的代码应该在单独的方法中。只是system.exit从它停止我的web服务器时起就让我害怕…:)是的,它也会起作用。最好的解决方案和最常识的解决方案。+1。我尝试了这个方法,它确实将程序循环回开始,但是代码让我在实际执行该选项之前输入选项4-5次,程序不会将选项1中的数字存储到num1 num2和num3。在程序上尝试了这个代码,当我运行它时,程序不返回任何内容。你说的“不返回任何内容”是什么意思?它不打印任何内容,用户看不到System.out.printlns的任何部分
int input;
do {
 //---
 //The rest of your logic
 //---
} while(input != 4);