题目

读入两个整数 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