题目
读入两个整数 a、b 和一个字符运算符(+、-、*、/),输出运算结果;除法时若 b 为 0 则提示错误。
输入格式:一行输入两个整数和一个字符运算符(+、-、*、/),以空格分隔。
输出格式:输出一个整数表示运算结果;若遇到除以 0 或非法字符,输出对应提示信息并换行。
数据范围与约定:-105 ≤ a, b ≤ 105。
思路与算法
1. 分支结构选型
单字符选择场景适合使用 switch(op) 语句,底层常被优化为跳转表;各个 case 块末尾必须加上 break 避免穿透执行。
2. 格式化读入字符
使用 Scanner 输入("%d %d %c", &a, &b, &op) 时,格式串中的空格会自动跳过数字与运算符之间的空白字符(空格、制表符、换行符),确保正确读取运算符。
3. 除法与异常防御
遇到除法 / 时提前判断 b != 0;default 分支统一兜底未知运算符。
完整程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
char op = sc.next().charAt(0);
switch (op) {
case '+':
System.out.println(a + b);
break;
case '-':
System.out.println(a - b);
break;
case '*':
System.out.println(a * b);
break;
case '/':
// 除法特判:除数不能为 0,防止除零错误
if (b != 0) {
System.out.println(a / b);
} else {
System.out.println("除数为 0");
}
break;
default:
System.out.println("未知运算符");
break;
}
}
}运行示例
输入:
10 3 *输出:
30