如何在Java中获得循环程序

如何在Java中获得循环程序,java,Java,我是Java编程新手,我想尝试制作一个计算器。我编写了代码,但唯一的问题是它只运行一次。我想知道是否有办法让它“循环”。我的意思是,在主方法的开头添加一个问题,这样我可以再次运行计算器。这是我的密码 import java.util.Scanner; public class calculatorFull { public static void main(String[] args){ int op; double num1, num2;

我是Java编程新手,我想尝试制作一个计算器。我编写了代码,但唯一的问题是它只运行一次。我想知道是否有办法让它“循环”。我的意思是,在主方法的开头添加一个问题,这样我可以再次运行计算器。这是我的密码

import java.util.Scanner;

public class calculatorFull {
    public static void main(String[] args){
        int op;
        double num1, num2;
        Scanner operation = new Scanner(System.in);
        System.out.println("1 - Add\n2 - Subtract\n3 - Multiply\n4 - Divide");
        System.out.print("Which operation would you like to perform?   ");
        op = operation.nextInt();

        if((op != 1) && (op != 2) && (op != 3) && (op != 4)){
            System.out.println("That wasn't an option...");
        }else{
            System.out.print("First number:   ");
            num1 = operation.nextDouble();
        System.out.print("Second number:   ");
            num2 = operation.nextDouble();


            if(op==1){
                Add(num1, num2);
            }else if(op==2){
                Sub(num1, num2);
            }else if(op==3){
                Mult(num1, num2);
            }else if(op==4){
                Div(num1, num2);
            }
    }
}

public static void Add(double x, double y){
        double numsum;
        numsum = x + y;
        System.out.printf("%s + %s = %s", x, y, numsum);
    }

    public static void Sub(double x, double y){
        double numsum;
        numsum = x - y;
        System.out.printf("%s - %s = %s", x, y, numsum);
    }

    public static void Mult(double x, double y){
        double numsum;
        numsum = x * y;
        System.out.printf("%s * %s = %s", x, y, numsum);
    }

    public static void Div(double x, double y){
        double numsum;
        numsum = x / y;
        System.out.printf("%s / %s = %s", x, y, numsum);
    }
}
提前感谢您的帮助


顺便说一句,我认为这可能不同于这个问题()。我调用了不同的方法,从main改为只调用1个方法。不知道这是否会改变任何解决方案,或者是否是同一个问题,但感谢您指出可能是这样。

您可以设置一个sentinel值以退出程序(即,在您的选项中为-1),并跟踪我们将在while循环中不断检查的变量。如果op变为-1,它将退出。否则,它将重新启动while循环内的逻辑

    int op = 0;
    while(op != -1) {
        double num1, num2;
        Scanner operation = new Scanner(System.in);
        System.out.println("1 - Add\n2 - Subtract\n3 - Multiply\n4 - Divide");
        System.out.print("Which operation would you like to perform?   ");
        op = operation.nextInt();

        if((op != 1) && (op != 2) && (op != 3) && (op != 4)){
            System.out.println("That wasn't an option...");
        }else{
            System.out.print("First number:   ");
            num1 = operation.nextDouble();
        System.out.print("Second number:   ");
            num2 = operation.nextDouble();


            if(op==1){
                Add(num1, num2);
            }else if(op==2){
                Sub(num1, num2);
            }else if(op==3){
                Mult(num1, num2);
            }else if(op==4){
                Div(num1, num2);
            }
    }
试试这个

更新:

使用以下命令:

import java.io.*;

public class StackOverFlow
{
  // arguments are passed using the text field below this editor
  public static void main(String[] args) throws IOException
  {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
    int cont = 0;

    while(cont == 0){
     System.out.println("Inside");
    // Put your calculator code here
    System.out.println("Enter 1 to exit or 0 to continue");
    cont = Integer.parseInt(br.readLine());

}
    System.out.println("Outside");
  }
}

最简单的方法是在计算完成并打印后调用main方法。您可以使用
main(null)
来实现这一点。只需在if-else块之后添加它。代码如下:

        if(op==1){
            Add(num1, num2);
        }else if(op==2){
            Sub(num1, num2);
        }else if(op==3){
            Mult(num1, num2);
        }else if(op==4){
            Div(num1, num2);
        }
        System.out.println(); // prints blank line
        main(null);// calls main method (re-runs program)

这将完成操作,然后重复该过程。

检查
for
循环和
while
循环。可能的重复还请注意,在Java中,方法名称通常以小写字母开头:启动语言的最佳方法是阅读教程。您也应该尝试一下,在将其作为答案发布之前。这是无限的loops@Tom谢谢你指出。我轻描淡写地直接回答了它。@dddjewelsbbbb这个答案中没有伪代码。@Tom你是对的,我向你投赞成票。我想我应该从一开始就说代码片段不可编译。将代码段视为伪代码的子集是不公平的。@bh34e5很乐意帮助:)如果这对您有所帮助,如果您能接受答案,我将不胜感激。祝你有一个美好的一天:)当我这样做的时候,它说op还没有初始化yet@bh34e5更正:Java警告您它没有初始化,因为局部变量没有得到初始值。我的错。@bh34e5您只需要将op值指定为0。这非常有用。我知道在批处理编程中有一种方法可以实现这一点,你可以说“goto main”,但我不认为在java中有一种方法可以实现这一点。就是这样。谢谢你的回复!
        if(op==1){
            Add(num1, num2);
        }else if(op==2){
            Sub(num1, num2);
        }else if(op==3){
            Mult(num1, num2);
        }else if(op==4){
            Div(num1, num2);
        }
        System.out.println(); // prints blank line
        main(null);// calls main method (re-runs program)