java计算器循环不能正常工作

时间:2013-07-26 01:29:42

标签: java calculator

由于某种原因,我的计算器不会等待用户输入来完成do while循环。我对java编码很新(目前只做了几个小时)。我希望用户能够在程序关闭之前做更多的数学运算,而不必在每次想要使用它时重新打开它(显然我并不是说任何严肃的事情,我只想学习,我认为这会有所帮助

继承我的代码

import java.util.Scanner;


public class calculator {
public static void main(String[] args){
    double Answer;
    String op;
    double num1;
    double num2;
    String again;
    boolean yesorno = true;

            Scanner input = new Scanner(System.in);

             while (yesorno = true){
                System.out.print("What opperation would you like to preform? +,-,*,/, :");
                op = input.nextLine();
                System.out.print("What is the first number? : ");
                num1 = input.nextDouble();
                System.out.print("And the seccond number? : ");
                num2 = input.nextDouble();
                if (op.equals("+")) {
                    Answer = (num1 + num2);
                    System.out.println(Answer);

                } else if (op.equals("-")) {
                    Answer = num1 - num2;
                    System.out.println(Answer);

                } else if (op.equals("*")) {
                    Answer = num1 * num2;
                    System.out.println(Answer);

                } else if (op.equals("/")) {
                    Answer = num1 / num2;
                    System.out.println(Answer);

                }
                System.out.println("Would you like to do any more math?");
                again = input.nextLine();
                if (again.equals("yes")) {
                    yesorno = true;
                } else if (again.equals("no")) {
                    yesorno = false;
                    System.out.print("have a good day!");

                }
            } while (yesorno = true);       
}
}

请忽略此代码的开头和结尾处的akward格式。

4 个答案:

答案 0 :(得分:1)

您在<{1}}中分配,而非测试是否相等。您应该使用while (yesorno = true){,因为double等于(while (yesorno == true){测试是否相等。

答案 1 :(得分:1)

1)while(yesorno = true )您正在进行分配 改成 while(yesorno == true)为了防止这种情况你可以使用yoda样式while(true = yesorno)然后会抛出编译错误,因为你无法为某个值赋值。 或者更简单的是使用while(yesorno)

2)关注Java Code Convention,变量名称为小写。

3)如果此块被执行while (yesorno = true);,您将有一个无限循环。

4)如果你使用的是java 7,你可以切换字符串

             switch(op){
             case "+":answer = num1 + num2;break;
             case "-":answer = num1 - num2;break;
             case "*":answer = num1 * num2;break;
             case "/":answer = num1 / num2;break;
             default: throw new IllegalArgumentException("Invalid operation "+ op);
             }
             System.out.println(answer);

答案 2 :(得分:0)

有很多错误,我已修好并为您评论。希望它有所帮助:

import java.util.Scanner;

// KK: by general convention class names should always start with an upper case letter
public class calculator {
    public static void main(String[] args) {
        double Answer; //KK: local variable should be lower case
        String op;
        double num1;
        double num2;
        String again;
        boolean yesorno = true;

        Scanner input = new Scanner(System.in);

        //KK: for comparing you need the double-equals
        //KK: the loop will be executed as long as the expression is true, so for a boolean you don't need it at all
        //KK: you can use either of the following:
        // while (yesorno == true)
        // while (yesorno)
        while (yesorno) {
            System.out.print("What opperation would you like to preform? +,-,*,/, :");
            op = input.nextLine();
            System.out.print("What is the first number? : ");
            num1 = input.nextDouble();
            System.out.print("And the seccond number? : ");
            num2 = input.nextDouble();
            if (op.equals("+")) {
                Answer = (num1 + num2);
                System.out.println(Answer);

            } else if (op.equals("-")) {
                Answer = num1 - num2;
                System.out.println(Answer);

            } else if (op.equals("*")) {
                Answer = num1 * num2;
                System.out.println(Answer);

            } else if (op.equals("/")) {
                Answer = num1 / num2;
                System.out.println(Answer);

            }
            System.out.println("Would you like to do any more math?");
            //KK: you need to call nextLine twice because you printed 2 lines here
            //KK: otherwise again will be empty, so yesorno will always be true and you have an endless loop
            again = input.nextLine();
            again = input.nextLine();
            if (again.equals("yes")) {
                yesorno = true;
            } else if (again.equals("no")) {
                yesorno = false;
                System.out.print("have a good day!");
            }
        }
        // KK: the following line was an empty loop, that didn't do anything, so I commented it
        // while (yesorno = true);

    }
} //KK: this one was missing at the end too ;)

(我在KK开始发表评论,所以你看到了它们,可以在以后删除它们。)

答案 3 :(得分:0)

试试这个......

public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    boolean status = true;
    while(status){

    String answer = "";
    String choise = "";

    System.out.println("\"WELCOME TO JAVA CALCULATOR\"");

    Scanner scn = new Scanner(System.in);
    Scanner cal = new Scanner(System.in);
    Scanner cho = new Scanner(System.in);

    System.out.println("Enter the numers one by one that you want to calculate..");
    int numA = scn.nextInt();
    int numB = scn.nextInt();
    int result = 0;
    System.out.println("What you want to calculate...?");
    answer = cal.nextLine();

    if(answer.equals("+")){
        result = numA+numB;}
    if(answer.equals("-")){
        result = numA-numB;}
    if(answer.equals("*")){
        result = numA*numB;}
    if(answer.equals("/")){
        result = numA/numB;}
    System.out.println( "The result of " + numA + " and " + numB + " is : " + result);
    System.out.println("Do you want to continue.....(y) or (n)?");
    choise = cho.nextLine();

    if(choise.equalsIgnoreCase("y")){
        System.out.println("Welcome back.....:)\n\"Make By Saikat Halder\"");
        status = true;}
    if(choise.equalsIgnoreCase("n")){
        System.out.println("Good bye....Thanks for useing java Calculator......:)");
        System.exit(0);

        }
    }
}

}