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

时间:2016-05-26 13:38:24

标签: java menu switch-statement

在用户完成工作后,我用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");
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您需要将程序逻辑包装在一个循环中。 尝试使用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

    }
}

答案 1 :(得分:1)

while循环是这类问题的最佳选择,只需考虑用户可以选择切换布尔条件的条件。

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

答案 2 :(得分:0)

也许把整个程序放在while循环中,继续运行bool条件,当他们想要退出时可以设置为false

答案 3 :(得分:-1)

您可以尝试以下操作:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Window win;
    win.show();
    return a.exec();
}