switch 语句中的字符语句 case 值无效
Invalid character statement case value in switch statement
我的代码告诉我大小写 'A+' 是一个无效的字符语句,但我需要能够有大小写 A+、A、A- 等等。我想知道的是:我可以根本没有 + 或 - 在 case 值内吗?如果是这样,是否有任何其他方法可以识别用户在控制台中输入的内容。我一直无法找到浏览周围的答案。感谢您的帮助!
import java.util.Scanner;
public class GradeAdvice {
public static void main(String[] args) {
// User will input grade and program will give advice corresponding
// to that grade
// Prompt use for their grade
System.out.println("What was your grade on the midterm?");
char midtermGrade;
// Create an input object
Scanner input = new Scanner(System.in);
midtermGrade = input.next().charAt(0);
// Determine which advice to give based on grade
switch (midtermGrade)
{
case 'A+' :
case 'a+' : System.out.println("Continue doing what you have been doing, ask questions");
break;
default: System.out.println("This grade is invalid.");
break;
}
// Close input
input.close();
}
}
"A+"
,字符串用双引号,字符用单引号。
Java 中的字符文字在单引号内标识一个字符,而不是多个字符。对于多个字符,您必须使用 String
,由双引号字符分隔。
在 Java 7+ 中,您可以使用 String
作为大小写标签,例如
case "A+":
但是你只使用了输入的第一个字符。变化
char midtermGrade;
midtermGrade = input.next().charAt(0);
到
String midtermGrade;
midtermGrade = input.next();
一个char
可以容纳一个字符。相反,您可以只使用 String
:
String midtermGrade;
// Create an input object
Scanner input = new Scanner(System.in);
midtermGrade = input.next();
// Determine which advice to give based on grade
switch (midtermGrade)
{
// Note that strings are denoted by "s, not 's.
case "A+" :
case "a+" : System.out.println("Continue doing what you have been doing, ask questions");
break;
default: System.out.println("This grade is invalid.");
break;
}
A+是字符串,不是字符。您可以在 C# 中完成此操作(使用 " 而不是 '),但不能在 Java 中完成,大多数其他语言也不能。最简单的方法可能是将开关转换为一系列 'if'声明。
这是因为您使用的是字符而不是字符串。一个字符正是它所说的,一个字符。 A+ 是两个字符 A 和 +。对字符串文字使用双引号 (")。例如:
'A' \ This is a character
"A" \ This is a string
"A+" 不是 char ,它是 string 定义为 string 。
使用String
,并规范化大小写
switch( input.next().toUpperCase() )
{
case "A+" :
...
default :
...
}
我的代码告诉我大小写 'A+' 是一个无效的字符语句,但我需要能够有大小写 A+、A、A- 等等。我想知道的是:我可以根本没有 + 或 - 在 case 值内吗?如果是这样,是否有任何其他方法可以识别用户在控制台中输入的内容。我一直无法找到浏览周围的答案。感谢您的帮助!
import java.util.Scanner;
public class GradeAdvice {
public static void main(String[] args) {
// User will input grade and program will give advice corresponding
// to that grade
// Prompt use for their grade
System.out.println("What was your grade on the midterm?");
char midtermGrade;
// Create an input object
Scanner input = new Scanner(System.in);
midtermGrade = input.next().charAt(0);
// Determine which advice to give based on grade
switch (midtermGrade)
{
case 'A+' :
case 'a+' : System.out.println("Continue doing what you have been doing, ask questions");
break;
default: System.out.println("This grade is invalid.");
break;
}
// Close input
input.close();
}
}
"A+"
,字符串用双引号,字符用单引号。
Java 中的字符文字在单引号内标识一个字符,而不是多个字符。对于多个字符,您必须使用 String
,由双引号字符分隔。
在 Java 7+ 中,您可以使用 String
作为大小写标签,例如
case "A+":
但是你只使用了输入的第一个字符。变化
char midtermGrade;
midtermGrade = input.next().charAt(0);
到
String midtermGrade;
midtermGrade = input.next();
一个char
可以容纳一个字符。相反,您可以只使用 String
:
String midtermGrade;
// Create an input object
Scanner input = new Scanner(System.in);
midtermGrade = input.next();
// Determine which advice to give based on grade
switch (midtermGrade)
{
// Note that strings are denoted by "s, not 's.
case "A+" :
case "a+" : System.out.println("Continue doing what you have been doing, ask questions");
break;
default: System.out.println("This grade is invalid.");
break;
}
A+是字符串,不是字符。您可以在 C# 中完成此操作(使用 " 而不是 '),但不能在 Java 中完成,大多数其他语言也不能。最简单的方法可能是将开关转换为一系列 'if'声明。
这是因为您使用的是字符而不是字符串。一个字符正是它所说的,一个字符。 A+ 是两个字符 A 和 +。对字符串文字使用双引号 (")。例如:
'A' \ This is a character
"A" \ This is a string
"A+" 不是 char ,它是 string 定义为 string 。
使用String
,并规范化大小写
switch( input.next().toUpperCase() )
{
case "A+" :
...
default :
...
}