You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java switch语句报错Syntax error on token "{" 如何解决

问题原因及修复方案

错误原因

  • switch语法要求switch大括号之后必须直接跟case或default标签,不能在所有标签之前书写变量声明、业务逻辑等普通代码,将double answer;定义在所有case之前,直接触发了语法报错。
  • 代码中operator是char字符类型,case后匹配的常量需要用单引号包裹的字符值(如'+'),原代码使用双引号包裹的字符串值,类型不匹配,即使修复第一个问题仍会报错。
  • 除法分支的输出语句中运算符误写为*,会导致运算结果和输出的运算符不匹配的逻辑错误。

修复后的完整代码

import java.util.Scanner;

public class Assignment2 {
    
    public static void main(String[] args) {
        // 输入两个数字和运算符
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Enter a number: ");
        double num1 = scan.nextDouble();
        System.out.println("Enter a number: ");
        double num2 = scan.nextDouble();
        System.out.println("Enter + - * or /");
        char operator = scan.next().charAt(0);
        
        // 将answer变量移到switch外部定义
        double answer;
        switch (operator) {
            // case后改为单引号包裹的字符
            case '+':
                answer = num1 + num2;
                System.out.println(num1 + "+" +num2 + "=" + answer);
                break;
            case '-':
                answer = num1 - num2;
                System.out.println(num1 + "-" +num2 + "=" + answer);
                break;
            case '*':
                answer = num1 * num2;
                System.out.println(num1 + "*" +num2 + "=" + answer);
                break;
            case '/':
                answer = num1 / num2;
                // 修正输出的运算符为/
                System.out.println(num1 + "/" +num2 + "=" + answer);
                break;
            default:
                System.out.println("Error: Not a valid symbol!");
                break;
        }
        scan.close();           
    }
}

内容的提问来源于stack exchange,提问作者tv0811

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:48:03