如何使用多个条件执行if语句

时间:2015-02-03 15:59:11

标签: java

如何制作包含多个条件的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!");

6 个答案:

答案 0 :(得分:4)

首先,使用.equals()比较字符串。

其次,这是您使用||运算符的方式:

if(temp.equals("A") || temp.equals("a"))
    pit = 13;

更好的方法是:

if("A".equalsIgnoreCase(temp))
    pit = 13;

这样:

  1. 您永远不会得到NullPointerException
  2. 您不必使用||运算符
  3. 最后,作为注释,请记住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"))将是更好的代码编码方式。您将获得正确的结果,但这不是最合适的编码方式。