2015-04-01 60 views
0

我正在嘗試創建它,以便用戶輸入關鍵字並執行該情況。這工作正常,但我希望用戶也能夠寫在關鍵字後,它仍然會找到正確的情況。例如,用戶可能輸入「搜索狗和貓」,它會運行「搜索」情況。必須在Java中的switch語句中輸入常量嗎?

我試圖做一個只存儲字符串的「SEARCH」部分的臨時變量,但我收到一個錯誤,說它必須是switch語句中的一個常量。有沒有解決方法,或者我將不得不使用if語句?

下面是一些測試代碼與錯誤:

switch(textField.getText) 
{ 
    case SEARCH: case textField.getText().split(" ", 2)[0]: // Error is occuring on the second case statement 
    // Statements 
    break; 

    case Default: 
    lblOutput.setText("ERROR: NOT FOUND"); 
} 
+0

@RealSkeptic我認爲這是。這是編譯時錯誤(「它必須是switch語句中的常量」)。 – ryanyuyu 2015-04-01 20:51:48

+0

@RealSkeptic更新了原始帖子 – gobigred5 2015-04-01 20:54:38

+1

在編譯時解決了個案名稱。這就是爲什麼他們必須是不變的價值。 – Powerlord 2015-04-01 20:54:43

回答

0

你需要指定的case語句三兩件事之一:

  1. 恆定
  2. 枚舉
  3. 默認關鍵字

參考到 https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.11

此外,你有一個「案件」內的「案件」,沒有中間的「switch」語句。

+1

連續兩個'case'標籤實際上是非常合法的。只是它們都不是非常量表達式。 – RealSkeptic 2015-04-01 21:07:24

+0

的確如此。我忘了那個。 (即如果你有幾個使用相同邏輯的條件)。 我沒有以這種方式解釋原始帖子,但它是合法的。 – jhenderson2099 2015-04-01 21:14:58