2

我的代码是:

import java.util.Scanner;

class mainClass {
    public static void main (String [] args) {          
        secondaryClass SCO = new secondaryClass();          
        Scanner scanner = new Scanner(System.in);           
        String randomtext = scanner.nextLine();    
        if(randomtext.equals("What is the time"))
        {
            SCO.giveTime();               
        }
        else if (randomtext.equals("Whats the time"))
        {       
            SCO.giveTime();             
        }
    }       
}

我想知道是否可以将 if else 语句替换为以下内容:

import java.util.Scanner;

class mainClass {
    public static void main (String [] args) {  
        secondaryClass SCO = new secondaryClass();      
        Scanner scanner = new Scanner(System.in);       
        String randomtext = scanner.nextLine();
        if(randomtext.equals("What is the time" || "Whats the time"))
        {
            SCO.giveTime();
        }       
    }
}

顺便说一句,SCO是我第二课的对象,它完美地输出了时间。

4

6 回答 6

4

您可以使用正则表达式进行比较,但它只会将 OR 从 java 移动到正则表达式:

if (randomtext.matches("(What is the time)|(Whats the time)"))

虽然你可以更简洁地表达:

if (randomtext.matches("What(s| is) the time"))

甚至可以选择撇号和/或问号:

if (randomtext.matches("What('?s| is) the time\\??"))
于 2013-05-15T23:59:29.987 回答
3

你需要这样表述:

if (randomtext.equals("What is the time") || randomtext.equals("Whats the time"))
于 2013-05-15T23:58:33.500 回答
1

您使用||逻辑或运算符是正确的,但使用它的方式是错误的。从您的第一个示例中获取if和中的每个特定条件,并将它们放在它们之间,没有必要。else if||ifelse if

于 2013-05-15T23:57:55.747 回答
1

最明显的方法是这样做:

if(randomtext.equals("What is the time") || randomtext.equals("Whats the time"))
{
      SCO.giveTime();
}

但从 JDK 7 开始,您可以使用 switch 语句:

switch (randomtext) {
    case "What is the time":
    case "Whats the time":
        SCO.giveTime();
        break;
}
于 2013-05-16T00:00:22.263 回答
1

再看一眼:

import java.util.Scanner;

class mainClass {
    public static void main (String [] args) {
        secondaryClass SCO = new secondaryClass();

        Scanner scanner = new Scanner(System.in);

        String randomtext = scanner.nextLine();

        List<String> stringsToCheck = new ArrayList<String>();
        stringsToCheck.add("What is the time");
        stringsToCheck.add("Whats the time");

        if (stringsToCheck.contains(randomtext)) {
              SCO.giveTime();
        }       
    }
}   
于 2013-05-16T00:02:15.923 回答
-1

假设您在条件语句中只有两个可能的选项,您可以使用它

randomtext = Condition1 ? doesThis() : doesThat();

ps我不会做“案例”。在这种情况下,它并不重要,因为它只有两个选项,但是当您使用案例时,将根据条件“TRUE”单独检查每个案例行,这对于长程序可能需要很长时间。

于 2013-05-16T00:05:03.640 回答