繁体   English   中英

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

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

我用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 循环是解决此类问题的最佳选择,只需考虑用户可以选择切换布尔条件的条件。

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

也许将整个程序放在 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';
        }
    }
}

暂无
暂无

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

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