制作计算器但我收到编译错误

Making a calculator but I am receiving compiling errors

我正在自学 Java 并开始制作计算器,但是当我尝试 运行 代码时 运行 遇到了两个错误。

我正在考虑用角色实现一个 WHILE 循环来创建一个循环,但它似乎没有用。真的筋疲力尽,我认为这是一个问的好地方。

import java.lang.Math;
import java.util.Scanner;

public class Calculator 
{

    public static void main(String[] args) 
    {
        double numberOne = 0;
        double numberTwo = 0;
        String operatorInput;
        Scanner myInput = new Scanner(System.in);

       System.out.print("Enter first number: ");
       numberOne = myInput.nextDouble();

       System.out.print("Enter second number: ");
       numberTwo = myInput.nextDouble();

       System.out.print("Enter the operation you wish to perform (/, *, -, +): ");
       operatorInput = myInput.nextLine();

       double result = calculate(numberOne, numberTwo, operatorInput, myInput);

       System.out.printf("The result is: %.2f%n", result);

       myInput.close();
    }

    public static double calculate(double numberOne, double numberTwo, String operatorInput, Scanner myInput)
    {
        while(true)
        {
            switch (operatorInput)
            {
                case("/"):
                {
                    myInput.close();
                    return divideNumbers(numberOne, numberTwo);
                }
                case("*"):
                {
                    myInput.close();
                    return multiplyNumbers(numberOne, numberTwo);
                }
                case("+"):
                {
                    myInput.close();
                    return addNumbers(numberOne, numberTwo);
                }
                case("-"):
                {
                    myInput.close();
                    return subtractNumbers(numberOne, numberTwo);
                }
                default: 
                {
                    System.out.println("Invalid Input");
                    System.out.print("Enter the operation you wish to perform (/, *, -, +): ");
                    operatorInput = myInput.nextLine();
                }
            }
        }
    }

    public static double divideNumbers(double numberOne, double numberTwo)
    {
        return numberOne / numberTwo;
    }
    public static double multiplyNumbers(double numberOne, double numberTwo)
    {
        return numberOne * numberTwo;
    }
    public static double addNumbers(double numberOne, double numberTwo)
    {
        return numberOne + numberTwo;
    }
    public static double subtractNumbers(double numberOne, double numberTwo)
    {
        return numberOne - numberTwo;
    }
}
Calculator.java:27: error: cannot find symbol
       operatorInput = input.nextChar();
                            ^
  symbol:   method nextChar()
  location: variable input of type Scanner
Calculator.java:55: error: incompatible types: <null> cannot be converted to double
                return null;
                       ^

您可以将 double 原始类型更改为 Double 对象,以便能够 return 空值。 您也可以将 operatorInput 转换为字符串并将其读取为 input.next() 这是我建议的更改示例:

import java.util.Scanner;

public class Calculator 
{
public static void main(String[] args) 
{
    double numberOne = 0;
    double numberTwo = 0;
    String operatorInput;

Scanner input = new Scanner(System.in);

   System.out.print("Enter first number: ");
   numberOne = input.nextDouble();

   System.out.print("Enter second number: ");
   numberTwo = input.nextDouble();

   System.out.print("Enter the operation you wish to perform (/, *, -, +): ");
   operatorInput = input.next();
   System.out.println(calculate(numberOne, numberTwo,operatorInput));

}



public static Double calculate(double numberOne, double numberTwo, String operatorInput)
{
    switch (operatorInput)
    {
        case("/"):
        {
            return divideNumbers(numberOne, numberTwo);
        }
        case("*"):
        {
            return multiplyNumbers(numberOne, numberTwo);
        }
        case("+"):
        {
            return addNumbers(numberOne, numberTwo);
        }
        case("-"):
        {
            return subtractNumbers(numberOne, numberTwo);
        }
        default: 
        {
            System.out.println("Invalid Input");
            return null;
        }
    }

}

public static double divideNumbers(double numberOne, double numberTwo)
{
    return numberOne / numberTwo;
}
public static double multiplyNumbers(double numberOne, double numberTwo)
{
    return numberOne * numberTwo;
}
public static double addNumbers(double numberOne, double numberTwo)
{
    return numberOne + numberTwo;
}
public static double subtractNumbers(double numberOne, double numberTwo)
{
    return numberOne - numberTwo;
}

}

我通过在 switch 之上使用 while(true) 设法解决了这个问题。另外,我无法使用 nextChar(),因为扫描仪不支持它。我能够通过创建一个名为 myInput 的扫描器来解决这个问题。这让我可以继续通过我的角色选择。一旦完成,我就可以用那个扫描仪打破循环 myInput.close(); 参考上面更新的代码。再次感谢大家!

 double numberOne = 0;
        double numberTwo = 0;
        String operatorInput;
        Scanner myInput = new Scanner(System.in);

       System.out.print("Enter first number: ");
       numberOne = myInput.nextDouble();

       System.out.print("Enter second number: ");
       numberTwo = myInput.nextDouble();

       System.out.print("Enter the operation you wish to perform (/, *, -, +): ");
       operatorInput = myInput.nextLine();

       double result = calculate(numberOne, numberTwo, operatorInput, myInput);

       System.out.printf("The result is: %.2f%n", result);

       myInput.close();
    }

    public static double calculate(double numberOne, double numberTwo, String operatorInput, Scanner myInput)
    {
        while(true)
        {
            switch (operatorInput)
            {
                case("/"):
                {
                    myInput.close();
                    return divideNumbers(numberOne, numberTwo);
                }
                case("*"):
                {
                    myInput.close();
                    return multiplyNumbers(numberOne, numberTwo);
                }
                case("+"):
                {
                    myInput.close();
                    return addNumbers(numberOne, numberTwo);
                }
                case("-"):
                {
                    myInput.close();
                    return subtractNumbers(numberOne, numberTwo);
                }
                default: 
                {
                    System.out.println("Invalid Input");
                    System.out.print("Enter the operation you wish to perform (/, *, -, +): ");
                    operatorInput = myInput.nextLine();
                }
            }
        }
    }