Java计算器:如何返回主菜单?

Java计算器:如何返回主菜单?,java,menu,switch-statement,Java,Menu,Switch Statement,我用Java编写了一个计算器程序,用户完成工作后, 我希望这种情况发生: 我会问他是否想做更多的操作,如果是,程序应该返回到选择输入。如果没有,请中断程序。 我应该在代码中添加哪些行?这是我的计算程序: import java.util.*; class calc { public static void main(String ar[]) { char choice; Scanner in = new Scanner(System.in);

我用Java编写了一个计算器程序,用户完成工作后, 我希望这种情况发生: 我会问他是否想做更多的操作,如果是,程序应该返回到选择输入。如果没有,请中断程序。 我应该在代码中添加哪些行?这是我的计算程序:

import java.util.*;
class calc
{
    public static void main(String ar[])
    {
        char choice;
        Scanner in = new Scanner(System.in);
        System.out.println("WELCOME TO SHREYDAN'S CALC 1.0");
        System.out.println(" ");
        System.out.println("YOU CAN DO THE FOLLOWING:");
        System.out.println("+: ADDITION");
        System.out.println("-: SUBTRACTION");
        System.out.println("*: PRODUCT");
        System.out.println("/: QUOTIENT");
        System.out.println("#: SQUARE ROOT");
        System.out.println("^: POWER");
        System.out.println("$: ROUND OFF");
        System.out.println("!: FACTORIAL");
        System.out.println(" ");
        System.out.println("ENTER CHOICE");
        choice=in.next().charAt(0);
        switch(choice)
        {
            case '+':
                System.out.println("ENTER 2 NUMBERS, USER");
                double a=in.nextDouble();
                double b=in.nextDouble();
                System.out.println("SUM = "+(a+b));
                break;
            case '-':
                System.out.println("ENTER 2 NUMBERS, USER");
                double c=in.nextDouble();
                double d=in.nextDouble();
                System.out.println("SUBTRACTING "+d+" FROM "+c+" ... DIFFERENCE = "+(c-d));
                break;
            case '*':
                System.out.println("ENTER 2 NUMBERS, USER");
                double e=in.nextDouble();
                double f=in.nextDouble();
                System.out.println("PRODUCT = "+(e*f));
                break;
            case '/':
                System.out.println("ENTER 2 NUMBERS, USER");
                double g=in.nextDouble();
                double h=in.nextDouble();
                System.out.println("DIVIDING "+g+" BY "+h+" = "+(g/h));
                break;
            case '#':
                System.out.println("ENTER NO. FOR SQAURE ROOT:");
                double sqrt=in.nextDouble();
                System.out.println("SQUARE ROOT OF "+sqrt+" = "+Math.sqrt(sqrt));
                break;
            case '^':
                System.out.println("ENTER BASE, USER");
                double base=in.nextDouble();
                System.out.println("ENTER POWER, USER");
                double power=in.nextDouble();
                System.out.println(base+" RAISED TO POWER "+power+" = "+Math.pow(base,power));
                break;
            case '$':
                System.out.println("ENTER DECIMAL VALUES TO ROUND OFF");
                double deci=in.nextDouble();
                System.out.println("THE NEAREST ROUND OFF = "+Math.round(deci));
                break;
            case '!':
                System.out.println("ENTER A NO. FOR FACTORIAL:");
                int fact=in.nextInt();
                int factorial=1;
                for(int i=fact; i>=1;i--)
                    factorial=factorial*i;
                System.out.println(fact+"! = "+factorial);
                break;
            default:
                System.out.println("WRONG CHOICE USER");
        }
    }
}

您需要将程序逻辑包装在一个循环中。 尝试使用while循环

public static void main(String args[])
{
    boolean doContinue = true;
    while(doContinue){
        char choice;
        Scanner in = new Scanner(System.in);
        //program logic
        //when the user enters a command to end
        // set continue=false

    }
}

可能会将整个程序放入一个while循环中,并带有一个continue to run bool条件,当他们想要退出时,该条件可能被设置为false。您可以尝试以下操作:

import java.util.*;

class calc {
    public static void main(String ar[]) {
        char choice;
        Scanner in = new Scanner(System.in);
        System.out.println("WELCOME TO SHREYDAN'S CALC 1.0");
        System.out.println(" ");

        boolean loop = true;
        while (loop) {
            System.out.println("YOU CAN DO THE FOLLOWING:");
            System.out.println("+: ADDITION");
            System.out.println("-: SUBTRACTION");
            System.out.println("*: PRODUCT");
            System.out.println("/: QUOTIENT");
            System.out.println("#: SQUARE ROOT");
            System.out.println("^: POWER");
            System.out.println("$: ROUND OFF");
            System.out.println("!: FACTORIAL");
            System.out.println(" ");
            System.out.println("ENTER CHOICE");
            choice = in.next().charAt(0);
            switch (choice) {
                case '+':
                    System.out.println("ENTER 2 NUMBERS, USER");
                    double a = in.nextDouble();
                    double b = in.nextDouble();
                    System.out.println("SUM = " + (a + b));
                    break;
                case '-':
                    System.out.println("ENTER 2 NUMBERS, USER");
                    double c = in.nextDouble();
                    double d = in.nextDouble();
                    System.out.println("SUBTRACTING " + d + " FROM " + c + " ... DIFFERENCE = " + (c - d));
                    break;
                case '*':
                    System.out.println("ENTER 2 NUMBERS, USER");
                    double e = in.nextDouble();
                    double f = in.nextDouble();
                    System.out.println("PRODUCT = " + (e * f));
                    break;
                case '/':
                    System.out.println("ENTER 2 NUMBERS, USER");
                    double g = in.nextDouble();
                    double h = in.nextDouble();
                    System.out.println("DIVIDING " + g + " BY " + h + " = " + (g / h));
                    break;
                case '#':
                    System.out.println("ENTER NO. FOR SQAURE ROOT:");
                    double sqrt = in.nextDouble();
                    System.out.println("SQUARE ROOT OF " + sqrt + " = " + Math.sqrt(sqrt));
                    break;
                case '^':
                    System.out.println("ENTER BASE, USER");
                    double base = in.nextDouble();
                    System.out.println("ENTER POWER, USER");
                    double power = in.nextDouble();
                    System.out.println(base + " RAISED TO POWER " + power + " = " + Math.pow(base, power));
                    break;
                case '$':
                    System.out.println("ENTER DECIMAL VALUES TO ROUND OFF");
                    double deci = in.nextDouble();
                    System.out.println("THE NEAREST ROUND OFF = " + Math.round(deci));
                    break;
                case '!':
                    System.out.println("ENTER A NO. FOR FACTORIAL:");
                    int fact = in.nextInt();
                    int factorial = 1;
                    for (int i = fact; i >= 1; i--)
                        factorial = factorial * i;
                    System.out.println(fact + "! = " + factorial);
                    break;
                default:
                    System.out.println("WRONG CHOICE USER");
            }
            System.out.println("Want to calculate more?Y/N");
            loop = in.next().charAt(0) == 'Y';
        }
    }
}

虽然循环是解决这类问题的最佳选择,但只需考虑一个用户可以选择切换布尔条件的条件


例如,如果用户在“继续操作”选项中选择“否”,则将布尔值切换为false并退出while循环以结束程序。

恐怕
continue
是保留关键字,此代码无法编译。顺便说一句,您甚至不需要这个变量,您可以使用
break
退出循环。不过,在这个主题上,他们使用switch语句,使用'break'关键字退出循环会使事情变得更加混乱(阅读)。您应该编写伪代码或Java代码。如果您正在编写前者,请不要使用诸如
publicstaticvoidmain(stringargs[])
之类的东西,并且通常要明确它是伪代码。关于
break
,有一点很好,不过你可以使用标签。虽然(true)很难弄清楚发生了什么。while(someCondition)给了我一些代码。我能找到所有情况发生变化的地方,找到“休息”会更难。