如何重新启动java程序

如何重新启动java程序,java,switch-statement,application-restart,Java,Switch Statement,Application Restart,我对java非常陌生,只是在玩一些基础知识。我做了一些计算器。(可能有更简单的计算器,只是用我想到的东西计算) 这是我的密码: import java.util.Scanner; public class App { public static void main(String[] args) { Scanner input = new Scanner(System.in); double second; System.out.p

我对java非常陌生,只是在玩一些基础知识。我做了一些计算器。(可能有更简单的计算器,只是用我想到的东西计算)

这是我的密码:

import java.util.Scanner;

public class App {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);


        double second;

        System.out.println("Please tell me a number");

        double first = input.nextDouble();
        input.nextLine(); // Consume newline left-over

        System.out.println("You chose the number " + first);

        System.out
                .println("Now please choose what you want to do with the number. ( divide, add, multiply or subtract )");
        String text = input.nextLine();

        switch (text) {
        case "divide":
            System.out.println("What do you want to divide your number " + first + " with?");
            second = input.nextDouble();
            double resultDivide = first / second;
            System.out.println(first + " / " + second + " = " + resultDivide);
            break;
        case "add":
            System.out.println("What do you want to add to your number " + first + "?");
            second = input.nextDouble();
            double resultAdd = first + second;
            System.out.println(first + " + " + second + " = " + resultAdd);
            break;
        case "multiply":
            System.out.println("What do you want to multiply your number " + first + " with?");
            second = input.nextDouble();
            double resultMultiply = first * second;
            System.out.println(first + " * " + second + " = " + resultMultiply);
            break;
        case "subtract":
            System.out.println("What do you want to subtract your number " + first + " with?");
            second = input.nextDouble();
            double resultSubtract = first - second;
            System.out.println(first + " - " + second + " = " + resultSubtract);
            break;
        default:
            System.out.println("Sorry, I did not quite understand that. Please try again.");

        }

    }
所以我的问题是:当它在switch case语句中达到默认值时,我能让程序从beginning重新启动吗


提前感谢。

A
,而循环是您需要的。循环的输入条件将是
默认值
情况。在循环中,您必须将以前使用过的这段代码放入循环中:

System.out.println("Now please choose what you want to do with the number. ( divide, add, multiply or subtract )");
        String text = input.nextLine();

因此,它将继续请求输入,直到您没有得到一个
默认值
案例。

似乎您所要做的就是循环,直到用户指定了一个有效的操作。在这种情况下,您可以使用while循环,观察变量:

import java.util.Scanner;

public class App {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        double second;
        System.out.println("Please tell me a number");
        double first = input.nextDouble();
        input.nextLine(); // Consume newline left-over

        System.out.println("You chose the number " + first);

        System.out
                .println("Now please choose what you want to do with the number. ( divide, add, multiply or subtract )");
        String text = input.nextLine();

        boolean correctOperation = true;

        do {
            correctOperation = true;

            switch (text) {
                case "divide":
                    System.out.println("What do you want to divide your number " + first + " with?");
                    second = input.nextDouble();
                    double resultDivide = first / second;
                    System.out.println(first + " / " + second + " = " + resultDivide);
                    break;
                case "add":
                    System.out.println("What do you want to add to your number " + first + "?");
                    second = input.nextDouble();
                    double resultAdd = first + second;
                    System.out.println(first + " + " + second + " = " + resultAdd);
                    break;
                case "multiply":
                    System.out.println("What do you want to multiply your number " + first + " with?");
                    second = input.nextDouble();
                    double resultMultiply = first * second;
                    System.out.println(first + " * " + second + " = " + resultMultiply);
                    break;
                case "subtract":
                    System.out.println("What do you want to subtract your number " + first + " with?");
                    second = input.nextDouble();
                    double resultSubtract = first - second;
                    System.out.println(first + " - " + second + " = " + resultSubtract);
                    break;
                default:
                    System.out.println("Sorry, I did not quite understand that. Please try again.");
                    correctOperation = false;
                    text = input.nextLine();
            }
        } while(!correctOperation)
    }
}

我认为您需要一个while循环,例如:

String text = input.readLine();
while(text != null) {
   switch(...)
} 
还有,我想给你一些建议:

  • 如果输入的“文本”字符串为空,则应检查该字符串,如果“文本”字符串为空,则会遇到NullPointerException
  • 如果你要用这么多的case语句,你必须考虑设计模式,链接是.

中断并继续可选地接受一个参数。您可以在代码的主要部分放置一个
while
-或一个
do…while
-循环。在代码周围放置一个do while循环,工作gr8,感谢您的回答!