简体   繁体   English

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

[英]Calculator in Java: How to return to the main menu?

I've writter a calculator program in Java, after a user is done with work, I want this to happen: i'll ask if he wants to do more operations, if yes, the program should return to choice input.我用Java编写了一个计算器程序,在用户完成工作后,我希望发生这种情况:我会问他是否想做更多的操作,如果是,程序应该返回选择输入。 If no, break the program.如果没有,中断程序。 What lines should I add to the code?我应该在代码中添加哪些行? This is my calc program:这是我的计算程序:

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");
        }
    }
}

You need to wrap the program logic in a loop.您需要将程序逻辑包装在一个循环中。 Try using a while loop尝试使用 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 loops are your best bet for this type of problem, just think of a condition which the user can choose to toggle the boolean condition. while 循环是解决此类问题的最佳选择,只需考虑用户可以选择切换布尔条件的条件。

for example if the user chooses no on the "continuing of operations" choice, then toggle the boolean to false and exit the while loop to end the program.例如,如果用户在“继续操作”选项中选择否,则将布尔值切换为 false 并退出 while 循环以结束程序。

也许将整个程序放在 while 循环中,并带有 continue to run bool 条件,当他们想退出时可以将其设置为 false

You can try the following:您可以尝试以下操作:

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';
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM