2015-09-05 47 views
-5

我不知道該怎麼解釋這個問題,但希望這將讓你明白有人能告訴我一個簡單的方法來比較字符串

我知道這個代碼不工作

a = "hello"; 
    if (a.equals("hello" || "greetings")){ 
     //Execute code 
    } 

有一個簡單的方法來做到這一點沒有錯誤

我能做到這一點,但是這意味着我需要重複兩個

a = "hello"; 

    if (a.equals("hello")){ 
     //Do code 
    } 
    if (a.equals("greetings")){ 
     //Execute code 
    } 
01碼

這是我目前的代碼,但它不是我想要的。 我想要它做的是,如果例如topic = "Whats the date";我希望它執行代碼,因爲它包含日期,我無法找到一種方法來檢查它是否包含日期,所以||。工作

 scanner = new Scanner(System.in); 
     String topic = scanner.nextLine(); 
     topic = topic.toLowerCase(); 

    if (topic.equals("time") || topic.equals("date")){ 
     System.out.println("The time is " + Calendar.getInstance().getTime()); 
    } 
+1

有很多的例子,檢查鏈接。 [見.equals()] [1] [1]:http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – ohadsas

+1

@ GurfX你應該真的閱讀更多的Java編程。您發佈的代碼包含幾個語法錯誤。 –

+0

@MCEmperor我知道我只使用該代碼,所以你可以理解我的問題。我知道代碼沒有工作 – Albert

回答

-1

我發現一個回答我的問題一些試驗後,很抱歉的混亂

 scanner = new Scanner(System.in); 
     String topic = scanner.nextLine(); 
     topic = topic.toLowerCase(); 

     if (topic.contains("time") || topic.contains("date")){ 
     System.out.println("The time is " + Calendar.getInstance().getTime()); 
    } 
2
if (yourString.equals("hello") || yourString.equals("greetings")){ 
    //Execute code 
} 

如果你想你的字符串忽略大小寫比較。使用equalsIgnoreCase()方法而不是equals()

3

由於在任何情況下語法都不正確,您的代碼將無法編譯。

答案是沒有||操作符對boolean表情及String不是boolean值。

的有意義的方式來做到這一點是傳統的方式:

if (a.equals("hello") || a.equals("greetings") { 
    .. 
} 

如果您有許多不同的令牌很多不同的選擇,那麼你應該考慮使用不同的方法,如Map<String, Consumer<String>>讓你可以做一些事情像:

Map<String, Consumer<String>> mapping = new HashMap<>(); 
Consumer<String> greetings = s -> code; 

mapping.put("hello", greetings); 
mapping.put("greetings", greetings); 

... 

Consumer<String> mapped = mapping.get(a); 

if (mapped != null) 
    mapped.accept(a); 
0

以前的答案是正確的,對了點,但我想改變的一件事只是有點:

if ("hello".equals(a) || "greetings".equals(a)) { 
    //... 
} 

這樣的話,你是不是冒着NullPointerException(因爲你不能在null對象上執行方法,這將拋出如果anull)。如果您想忽略該情況,請使用equalsIgnoreCase(String)

,或者使用switch

switch(a) { 
    case "hello": //do something 
      break; 
    case "greetings": //do something 
      break; 
    default: //handle case where there is no match, if needed 
} 
+0

使用開關仍然會讓我重複代碼,我期待將它們結合在一起 – Albert

+0

是的,就你的情況而言。另外,根據上下文,你可能會發現''字符串字面值'.equals(string_var)'有用,儘管'Scanner'和/或'System.in'沒有什麼區別 – Luke

相關問題