如何制作包含多个条件的if语句?我以为我会使用||,但是当我使用它时,它说“||运算符未定义参数类型boolean,java.lang.String”
System.out.print("Which pit would you like to select? ");
String temp = input.nextLine();
{
if(temp == "A" || "a")
pit = 13;
else if(temp = "B" || "b")
pit = 12;
else if(temp = "C" || "c")
pit = 11;
else if(temp = "D" || "d")
pit = 10;
else if(temp = "E" || "e")
pit = 9;
else if(temp = "F" || "f")
pit = 12;
else
System.out.println("Not a valid pit!");
答案 0 :(得分:4)
首先,使用.equals()
比较字符串。
其次,这是您使用||
运算符的方式:
if(temp.equals("A") || temp.equals("a"))
pit = 13;
更好的方法是:
if("A".equalsIgnoreCase(temp))
pit = 13;
这样:
NullPointerException
||
运算符最后,作为注释,请记住Java中的等于运算符是==
,而=
是赋值运算符。
答案 1 :(得分:3)
在java
使用组条件运算符时,您必须重新指定每次测试的值...
if(temp == "A" || "a")
会变成
if(temp.equals("A") || temp.equals("a"))
请注意,我在使用equals
函数进行比较,因为您要比较Object
和==
只会比较内存地址值。
此外,由于多个条件检查具有不同大小写的相同字母,您可以使用
if ("a".equals(temp.toLowerCase())
正如@LuiggiMendoza所说。
答案 2 :(得分:2)
您想使用equals方法来比较字符串
所以你的其他if语句应该是这样的
else if(temp.equals("D") || temp.equals("d"))
答案 3 :(得分:1)
if(temp == "A" || temp == "a")
pit = 13;
A == B
评估为布尔值(A == B) || C
因此也会评估boolean || String
。由于String不是布尔值,因此会出现该错误。
请注意,由于您要比较字符串而不是基元,因此您应该使用等于:
if(temp.equals("A") || temp.equals("a"))
pit = 13;
答案 4 :(得分:0)
在Java 7及更高版本上,最好使用带有字符串的switch case
switch (temp.toLowerCase()) {
case "a":
pit = 13;
break;
case "b":
pit = 12;
break;
case "c":
pit = 11;
break;
case "d":
pit = 10;
break;
case "e":
pit = 9;
break;
case "f":
pit = 12;
break;
default:
System.out.println("Not a valid pit!");
}
这种方式变得更加可读。
答案 5 :(得分:0)
将原始代码更改为以下内容:
System.out.print("Which pit would you like to select? ");
String temp = input.nextLine();
{
if(temp == "A" || temp == "a")
pit = 13;
else if(temp = "B" || temp == "b")
pit = 12;
else if(temp = "C" || temp == "c")
pit = 11;
else if(temp = "D" || temp == "d")
pit = 10;
else if(temp = "E" || temp == "e")
pit = 9;
else if(temp = "F" || temp == "f")
pit = 12;
else
System.out.println("Not a valid pit!");
您必须指定每次测试的变量。如果您正在测试它,例如:
,该怎么办?String temp = "A";
String pmet = "B";
if(temp.equals("A") || pmet.equals("B")) {
//Code to run here...
}
在前面的代码中,你说"如果temp是" A"或者pmet是" B",然后运行if语句"中的部分。您可以使用||测试多个变量运营商。此外,如前所述,当您测试字符串值时,最好使用" .equals(STRING)"。例如,if(temp.equals("A"))
将是更好的代码编码方式。您将获得正确的结果,但这不是最合适的编码方式。