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
相关产品推荐
相关产品推荐

