令牌"{"上的语法错误,此令牌切换(字符)之后的开关标签



我正在用头撞墙....我新……这是我的新经验。我收到一个错误"记号"{"上的语法错误,这个记号"在加粗的线路开关(操作符){。

import java.util.Scanner;
public class Assignment2 {

public static void main(String[] args) {
// Prompt for 2 numbers and a symbol

Scanner scan = new Scanner(System.in);

//Prompt for input
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);

switch (operator) {

/*previous attempt
//if (operator == "+") 
//  System.out.println(num1 + "+" + num2 + "=" + (num1+num2));
// else if (operator == "-")
//  System.out.println(num1 - num2);
// else if (operator == "*")
//  System.out.println(num1 * num2);
// else if (operator == "/")
//  System.out.println(num1 / num2); */

double answer;

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;


//reject all others
default:
System.out.println("Error: Not a valid symbol!");
break;
}

scan.close();           
}
}

您将operator读取为char,而在switch case中您将它们用作string。下面的代码应该可以为您工作。

import java.util.Scanner;
public class Assignment2 {
public static void main(String[] args) { // Prompt for 2 numbers and a symbol
Scanner scan = new Scanner(System.in);

//Prompt for input
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);
double answer;
switch (operator) {

/*previous attempt
//if (operator == "+") 
//  System.out.println(num1 + "+" + num2 + "=" + (num1+num2));
// else if (operator == "-")
//  System.out.println(num1 - num2);
// else if (operator == "*")
//  System.out.println(num1 * num2);
// else if (operator == "/")
//  System.out.println(num1 / num2); */


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;


//reject all others
default:
System.out.println("Error: Not a valid symbol!");
break;
}

scan.close();

}
}

不能在这里定义变量,在switch (operator) {之前加上double answer;

try this


import java.util.Scanner;
public class Assignment2 {
public static void main(String[] args) { // Prompt for 2 numbers and a symbol
Scanner scan = new Scanner(System.in);

//Prompt for input
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);

double answer;
switch (operator) {
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;

//reject all others
default:
System.out.println("Error: Not a valid symbol!");
break;
}
scan.close();
}
}

最新更新