Java 在使用简单的计算器I'时遇到问题;我一直在努力
我一直在用一个简单的计算器来计算这些错误 信息:java:编译模块“学习”时出错Java 在使用简单的计算器I'时遇到问题;我一直在努力,java,Java,我一直在用一个简单的计算器来计算这些错误 信息:java:编译模块“学习”时出错 Error:(24, 31) java: bad operand types for binary operator '*' first type: java.util.Scanner second type: java.util.Scanner Error:(27, 31) java: bad operand types for binary operator '/' first type: jav
Error:(24, 31) java: bad operand types for binary operator '*'
first type: java.util.Scanner
second type: java.util.Scanner
Error:(27, 31) java: bad operand types for binary operator '/'
first type: java.util.Scanner
second type: java.util.Scanner
Error:(21, 31) java: bad operand types for binary operator '-'
first type: java.util.Scanner
second type: java.util.Scanner
Error:(18, 31) java: bad operand types for binary operator '+'
first type: java.util.Scanner
second type: java.util.Scanner
Error:(16, 16) java: incompatible types: java.util.Scanner cannot be converted to int
这是我的密码
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner Operation = new Scanner(System.in);
Scanner num1 = new Scanner(System.in);
Scanner num2 = new Scanner(System.in);
float result = 0;
System.out.println("What is your first number?");
int num1int = num1.nextInt();
System.out.println("What is your second number?");
int num2int = num2.nextInt();
System.out.println("What operation would you like to perform?");
switch (Operation) {
case "addition":
result = num1 + num2;
break;
case "subtraction":
result = num1 - num2;
break;
case "multiplication":
result = num1 * num2;
break;
case "division":
result = num1 / num2;
break;
}
}
谢谢你们的帮助,伙计们,如果我不应该发布这个,我很抱歉,我是新来的。
num1
和num2
不是数字,而是类型java.util.Scanner
您可能会使用num1int
和num2int
,如下所示:
switch (Operation) {
case "addition":
result = num1int + num2int;
break;
case "subtraction":
result = num1int - num2int;
break;
case "multiplication":
result = num1int * num2int;
break;
case "division":
result = num1int / num2int;
break;
}
Scanner scannerNum1 = new Scanner(System.in);
Scanner scannerNum2 = new Scanner(System.in);
float result = 0;
System.out.println("What is your first number?");
int num1 = scannerNum1.nextInt();
System.out.println("What is your second number?");
int num2 = scannerNum2.nextInt();
switch (Operation) {
case "addition":
result = num1 + num2;
break;
case "subtraction":
result = num1 - num2;
break;
case "multiplication":
result = num1 * num2;
break;
case "division":
result = num1 / num2;
break;
}
我建议更改名称以反映真实类型,如下所示:
switch (Operation) {
case "addition":
result = num1int + num2int;
break;
case "subtraction":
result = num1int - num2int;
break;
case "multiplication":
result = num1int * num2int;
break;
case "division":
result = num1int / num2int;
break;
}
Scanner scannerNum1 = new Scanner(System.in);
Scanner scannerNum2 = new Scanner(System.in);
float result = 0;
System.out.println("What is your first number?");
int num1 = scannerNum1.nextInt();
System.out.println("What is your second number?");
int num2 = scannerNum2.nextInt();
switch (Operation) {
case "addition":
result = num1 + num2;
break;
case "subtraction":
result = num1 - num2;
break;
case "multiplication":
result = num1 * num2;
break;
case "division":
result = num1 / num2;
break;
}
注意:另外,不需要定义两个扫描仪。一个就够了。在你的代码中,你有一行
result = num1 + num2;
尝试将num1和num2相加。给定变量名称,这似乎是合理的,但是当你考虑这些行时,它变得荒谬:
Scanner num1 = new Scanner(System.in);
Scanner num2 = new Scanner(System.in);
你不能添加两个扫描仪,这在理论上没有意义,在实践中更没有意义。我想你是想这么做的:
result = num1int + num2int;
理论上这很好,但当您尝试使用num1int=3和num2int=4执行此操作时,将得到result=0而不是result=0.75:
result = num1int / num2int;
这是因为整数除法总是向0舍入。为避免出现这种情况,请将石膏加倍,如下所示:
result = ((double) num1int) / num2int;
我希望这有助于澄清你的问题。祝你好运 正如错误所说:
result=num1+num2代码>尝试添加两个扫描仪,这毫无意义。你的意思可能是result=num1int+num2int代码>。如果您以一种更有意义的方式命名变量,您可能会避免这个错误。我想您的命名方案在这里对您自己没有多大帮助。您正在添加两个扫描仪(为什么在任何情况下都需要两个扫描仪?)。是的,当num1
和num2
都是扫描仪类型时,您认为num1+num2
是什么意思?也许你的意思是num1int
和num2int
?提示:num1
对于引用扫描器来说不是一个好的变量名,因为扫描器不是一个数字。而且,你不需要两个不同的扫描仪。。。