有没有一种方法可以在java中的char上使用or运算符||



我是编程新手,所以这有点基本,但我在这里找不到为什么会一直发生这种情况的答案"运算符||对于参数类型char;,有人能帮忙吗,这是我们的任务。提前谢谢。

import java.util.Scanner;
public class Test {
public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
char choice = (scan.next().charAt(0));
switch (choice) {
case ('A'||'a'):
System.out.println("Wrong Answer");
break;

}

}
}

在Java中,不能对字符进行逻辑"或"运算。最接近您在Java中想要做的事情可能是:

switch (choice) {
case 'A':
case 'a':
System.out.println("Wrong Answer");
break;
}

在这里,我们让A的两种情况都流向同一种情况。另一种选择:

switch (Character.toUpperCase(choice)) {
case 'A':
System.out.println("Wrong Answer");
break;
}

这种方法首先将输入字符大写,然后我们只需要检查switch语句中的大写字母。

您可以将switch替换为常规的if语句,并使用||运算符:

public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char choice = scan.next().charAt(0);
if (choice == 'A' || choice == 'a') {
System.out.println("Wrong Answer");
}
}
}

然而,使用String类操作会更好。来自Scanner的next()正好返回String实例。经过小的修改,它可以像:

public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String firstLetter = scan.next().substring(0, 1);
if (StringUtils.equalsIgnoreCase(firstLetter, "A")) {
System.out.println("Wrong Answer");
}
}
}

此外,还使用了StringUtils类中的equalsIgnoreCase((。您必须使用生成管理器将此依赖项添加到项目中。

您可以将字符转换为小写或大写:

switch (Character.toLowerCase(choice)) {
case 'a':    System.out.println("Wrong Answer");    break;
}

正如其他答案所说,每个case语句中只能有一个值。其他答案建议使用两种案例陈述。然而,Java的最新版本(从版本13开始(有一个增强的switch语句,使其更加整洁:

switch (choice) {
case 'A', 'a' -> System.out.println("Wrong Answer");
}

看看它整洁了多少?您不仅不需要两个case语句,而且也不需要break语句。

其他答案建议使用Character.toLowerCase,但这也存在问题。考虑一下:

switch (Character.toLowerCase(choice)) {
case 'i':
System.out.println("Correct answer");
break;
default:
System.out.println("Wrong answer");
break;
}

问题是Character.toLowerCase对当前区域设置敏感。如果土耳其的用户运行以上操作,并键入I,他们将得到";错误答案"而不是正确的答案。这是因为在土耳其语中,字母I的小写等价物不是I,而是ı(一个没有点的I(。类似的问题也出现在toUpperCase和其他一些语言中。出于这个原因,我不建议使用toLowerCase/toUpperCase。

最新更新