制作计算器但我收到编译错误
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();
}
}
}
}
我正在自学 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();
}
}
}
}