提问人:Jeseca Z 提问时间:6/24/2022 最后编辑:user207421Jeseca Z 更新时间:6/24/2022 访问量:542
不兼容的操作数类型 Scanner 和 String?
Incompatible operand types Scanner and String?
问:
我不断收到以下错误:
- 不兼容的操作数类型扫描仪 和 String
- 不兼容的操作数类型 int 和 字符串 在我添加 int op = Integer.valueOf(operator) 行之前,当我命名我的案例时,它一直给我错误。我还很新,这是我为我的班级编写的第二个代码,所以如果可能的话,请保持解释简单(如果有任何混淆,这里也没有显示一个计算器类):
//change the package name to calculatorClass///////////////
import java.util.Scanner;
public class assignmentB {
public static String String(int y,int x, String name, String str) throws Exception {
if (y < 1)
throw new Exception("Value must be larger than 0.");
if (x < 1)
throw new Exception("Value must be larger than 0");
return name;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator c1 = new Calculator();
Scanner input = new Scanner(System.in);
c1.name = "The total is $";
try {
} catch (Exception e1){
System.out.println(e1);
}
{
int x, y, s, a, m;
String name1;
System.out.println("Red River College");
System.out.println("Custom Calculator");
System.out.println("Enter first value: ");
x = input.nextInt();
System.out.println("Enter second value: ");
y = input.nextInt();
System.out.println("Enter operation(a=Add, s=Subtract, m=multiply): ");
String operator = input.nextLine();
int op =Integer.valueOf(operator);
switch (op) {
case 1:
if (input == "s") {
System.out.println(c1.name + c1.subtract(x,y));
}
case 2:
if (input == "a") {
System.out.println(c1.name + c1.add(x,y));
}
case 3:
if (input == "m") {
System.out.println(c1.name + c1.multiply(x,y));
}
}
}
}
}
```
答:
5赞
Kaan
6/24/2022
#1
您已经用以下行定义了一个 :input
Scanner
Scanner input = new Scanner(System.in);
然后,您可以使用 to 执行扫描程序操作,就像您在此处执行的操作一样:input
x = input.nextInt();
目前为止,一切都好。
但是在代码的后面,您将执行此操作(以及一些类似的变体):
if (input == "s") {
...
}
这是无效的。Java 编译器告诉你,它不允许你用来比较 a(即 )和 String(在本例中为 “s”)。编译器给你一个错误,说:不允许。==
Scanner
input
input == "s"
目前尚不清楚您的意图是什么(即您希望代码的实际行为方式),但问题肯定出在这三个语句上。每个人都试图将 a 与 a 进行比较(一个是“s”,一个是“a”,最后一个是“m”)。因此,您需要修复这些问题才能执行您尝试执行的任何操作。if
java.util.Scanner
java.lang.String
作为猜测,也许您想从扫描仪读取新的 String 输入,然后将其与“s”等进行比较?如果是这样,它可能如下所示。请注意,要比较字符串,您应该使用(不要用于比较字符串或任何其他对象)。equals()
==
String newString = input.next();
switch (op) {
case 1:
if (newString.equals("s")) {
System.out.println(c1.name + c1.subtract(x, y));
}
...
}
评论
op
Scanner
case