Operator '+' cannot be applied to 'java.util.Scanner', 'java.util.Scanner'
时间: 2023-06-20 18:08:49 浏览: 59
这个错误提示意味着你正在尝试对两个 `Scanner` 对象使用加法操作符 `+`,这是不允许的。因为 `Scanner` 是一个 Java 类型,而加法操作符 `+` 仅适用于数值类型和字符串类型。
如果你想将两个 `Scanner` 对象的输入合并在一起,你可以使用 `StringBuilder` 类型。以下是一个例子:
```java
Scanner scanner1 = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
while (scanner1.hasNext()) {
sb.append(scanner1.nextLine());
}
while (scanner2.hasNext()) {
sb.append(scanner2.nextLine());
}
String combinedInput = sb.toString();
```
在上面的代码中,我们使用了两个 `Scanner` 对象来读取用户的输入,并将它们合并到一个 `StringBuilder` 对象中。最后,我们将 `StringBuilder` 转换为一个字符串类型 `combinedInput`。
相关问题
帮我修改这段代码的错误package experiment6; import java.util.Scanner; public class Test7 { public static void main(String[] args) { Scanner input = new Scanner(System.in); char[] args = new char[3]; for(int i = 0; i < args.length; i++) { System.out.println("请输入第" + (i + 1) + "个整数: "); args[i] = input.nextInt(); } for(int i = 0; i < args.length; i++) { System.out.println(args[i] + " "); } if (args.length != 3) { System.out.println("Usage: java Calculator operand1 operator operand2"); System.exit(1); } int result = 0; switch(args[1].charAt(0)) { case '+': result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]); case '-': result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]); case '.': result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]); case '/': result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]); } System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + '=' + result); } }
首先,代码中的变量 args 在内部循环部分和传入参数部分重名了,需要将其中一个改名。
另外,在 switch 语句中,每个 case 后面需要添加 break,否则会出现意想不到的结果。
以下是修改后的代码:
package experiment6;
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char[] arg = new char[3];
for(int i = 0; i < arg.length; i++) { //修改重名变量
System.out.println("请输入第" + (i+1) + "个整数: ");
arg[i] = input.next().charAt(0);
}
for(int i = 0; i < arg.length; i++) {
System.out.print(arg[i] + " ");
}
if (arg.length != 3) {
System.out.println("Usage: java Calculator operand1 operator operand2");
System.exit(1);
}
int result = 0;
switch(arg[1]) { //修改switch部分
case '+':
result = Integer.parseInt(arg[0]+"") + Integer.parseInt(arg[2]+"");
break;
case '-':
result = Integer.parseInt(arg[0]+"") - Integer.parseInt(arg[2]+"");
break;
case '*':
result = Integer.parseInt(arg[0]+"") * Integer.parseInt(arg[2]+"");
break;
case '/':
result = Integer.parseInt(arg[0]+"") / Integer.parseInt(arg[2]+"");
break;
default:
System.out.println("无效的运算符");
break;
}
System.out.println(arg[0] + " " + arg[1] + " " + arg[2] + " = " + result);
}
}
package com.company; import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); int score = 0; for (int i = 1; i <= 10; i++) { int num1 = random.nextInt(100); int num2 = random.nextInt(100); int operator = random.nextInt(2); // 0表示加法,1表示减法 int result; if (operator == 0) { result = num1 + num2; } else { result = num1 - num2; } System.out.print(i + ". " + num1 + (operator == 0 ? " + " : " - ") + num2 + " = "); int answer = scanner.nextInt(); if (answer == result) { System.out.println("恭喜你,答对了!"); score++; } else { System.out.println("很遗憾,答错了。正确答案为:" + result); } } System.out.println("您的得分为:" + score * 10); } }
由于题目代码缺少运算符号,所以无法运行。在result的计算中,应该是num1+num2,而不是num1-num2。
修改后代码如下:
```
package com.company;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int score = 0;
for (int i = 1; i <= 10; i++) {
int num1 = random.nextInt(100);
int num2 = random.nextInt(100);
int operator = random.nextInt(2);
// 0表示加法,1表示减法
int result;
if (operator == 0) {
result = num1 + num2;
} else {
result = num1 - num2;
}
System.out.print(i + ". " + num1 + (operator == 0 ? " + " : " - ") + num2 + " = ");
int answer = scanner.nextInt();
if (answer == result)
{
System.out.println("恭喜你,答对了!");
score ++;
}
else {
System.out.println("很遗憾,答错了。正确答案为:" + result);
}
}
System.out.println("您的得分为:" + score * 10);
}
}
```