简单的控制台计算器

时间:2016-09-11 18:46:57

标签: java

我设计了一个简单的控制台计算器如下,但我需要创建一个循环,我可以重新运行该程序:

这样我就不需要一次又一次地运行程序,它可以接受用户的输入并自行运行。

private static Scanner op;
private static Scanner input;
private static Scanner cont;

public static void main(String args[]) {
    double num1;
    double num2;
    double ans = 0;
    double l1;
    double l2;
    String operation;

    input = new Scanner(System.in);
    System.out.println("Please input your first number:");
    num1= input.nextDouble();

    System.out.println("Please input the second numer:");
    num2= input.nextDouble();

    op = new Scanner(System.in);
    System.out.println("Select your operation:");
    operation = op.next();

    if (operation.equals("+")){
        System.out.println("Your Result is :" + (num1+num2));
    }
    if (operation.equals("-")){
        System.out.println("Your Result is:" + (num1-num2));
    }
    if (operation.equals("/")){
        if (num2 == 0){
            System.out.println("Your Input is Invalid");}
            else {
                System.out.println("Your result is :" + (num1/num2));
            }

        }
        if (operation.equals("*")){
            System.out.println("Your result is:" + (num1*num2));
        }
        if (operation.equals("%")){
           System.out.println("Your result is:" + (num1*100/num2));
        }
        if (operation.equals("^")){
            ans= Math.pow(num1, num2);
            System.out.println("Your result is:"+ans);
        }
        if (operation.equals("log")){
            l1=Math.log(num1);
            l2=Math.log(num2);
           System.out.println("Your result is:"+l1/l2);
        }
        operation = cont.next();
        System.out.println("Do you wish to perform any other operation?");
        if (operation.equals("Yes")){

        else{
            System.out.println("Thank You");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

你可以创建一个函数并用这样的循环调用它:

private static void myfunction(){
    //put your code here
}

public static void main(String[] args) {
    //call your function until your condition is false
    while(myconditionistrue){
        myfunction();
    }
}

如果您想询问您的用户是否继续使用这种方式:

private static void myfunction() {
    //put your code here
}

public static void main(String[] args) {

    String exit;
    Scanner scan = new Scanner(System.in);
    do {
        //call your function or you can put all your code here
        myfunction();
        System.out.println("You want to continue? y : n :");
        exit = scan.next();
    } while (exit.equals("y"));
}

答案 1 :(得分:0)

您可以使用while(true),然后只需退出命令:

import java.util.Scanner;


class Main {
    private static Scanner op;
    private static Scanner input;
    private static Scanner cont;

    public static void main(String args[]) {

        double num1;
        double num2;
        double ans = 0;
        double l1;
        double l2;
        String operation;
        while (true) {
            input = new Scanner(System.in);
            System.out.println("Please input your first number:");
            num1 = input.nextDouble();

            System.out.println("Please input the second numer:");
            num2 = input.nextDouble();

            op = new Scanner(System.in);
            System.out.println("Select your operation:");
            operation = op.next();

            if (operation.equals("+")) {
                System.out.println("Your Result is :" + (num1 + num2));
            }
            if (operation.equals("-")) {
                System.out.println("Your Result is:" + (num1 - num2));
            }
            if (operation.equals("/")) {
                if (num2 == 0) {
                    System.out.println("Your Input is Invalid");
                } else {
                    System.out.println("Your result is :" + (num1 / num2));
                }
                ;

            }
            if (operation.equals("*")) {
                System.out.println("Your result is:" + (num1 * num2));
            }
            if (operation.equals("%")) {
                System.out.println("Your result is:" + (num1 * 100 / num2));
            }
            if (operation.equals("^")) {
                ans = Math.pow(num1, num2);
                System.out.println("Your result is:" + ans);
            }
            if (operation.equals("log")) {
                l1 = Math.log(num1);
                l2 = Math.log(num2);
                System.out.println("Your result is:" + l1 / l2);
            }
            //cont = new Scanner(System.in);

            //operation = cont.next();
            System.out.println("Do you wish to perform any other operation?");

            cont = new Scanner(System.in);

            operation = cont.next();


            if (operation.equals("Yes")) {

            } else {
                System.out.println("Thank You");
                System.exit(0);
            }
        }
    }
}

测试

Please input your first number:
5
Please input the second numer:
5
Select your operation:
*
Your result is:25.0
Do you wish to perform any other operation?
Yes
Please input your first number:
20
Please input the second numer:
10
Select your operation:
+
Your Result is :30.0
Do you wish to perform any other operation?
No
Thank You

答案 2 :(得分:0)

正如RealSkeptic在评论中所说,你需要的是一个循环。您可以了解循环,例如here。这种情况的最佳选择是 do-while循环

我对您的代码提出了一些建议:

  • 您不需要创建多个扫描仪来获得比仅有一个更多的输入。一个实例就足够了。
  • 当您使用许多条件不相交的 if 语句时(我的意思是,如果单个条件为真,则其余条件为false),请使用 else-if < / em>陈述。它更有效率。有关详细信息,请参阅this
  • 不要在 if 语句中使用空分支。在此特定示例中,您可以使用if (!operation.equals("Yes"))。感叹号意味着否定。因此,如果operation等于“是”,则整个条件将被评估为false。
  • 了解如何将复杂代码划分为函数(或方法)。通常,一个函数应该提供一个简单的功能。