2012-01-22 242 views
0

我想測試用戶是否提交了合理的數據,後來將其格式化爲整數。 switch語句的問題在哪裏? :)Swtich語句語法錯誤

void convert(String str) 
{ 
    int i=0; 
    String x=str.startsWith(); 
    switch (x) { 
     case 1: 
     case 2: 
     case 3: 
     case 4: 
     case 5: 
     case 6: 
     case 7: 
     case 8: 
     case 9: 
     case 0: 
      int i = Integer.parseInt(str); 
      break; 
     default: 
      System.out.println ("Should start with fixnumber"); 
    } 
    System.out.println (i); 
} 
+2

你變量是一個字符串,看看您的測試,如果它是一個int?你也沒有告訴我們這種行爲。你看到任何錯誤?如果是這樣,什麼? –

回答

2

你接通X這是一個字符串 - 除非你使用的是Java 7,你不能在switch語句中使用字符串。

我預計錯誤實際上是從str.startsWith(),其中該方法需要採取一個String(你要檢查什麼打頭),並返回一個布爾值,未來你不能打開任一。

UPDATE糾正你的代碼做什麼,我認爲你正在試圖做的:

void convert(String str) 
{ 
    int i = 0; 
    switch (str.charAt(0)) { 
     case '1': 
     case '2': 
     case '3': 
     case '4': 
     case '5': 
     case '6': 
     case '7': 
     case '8': 
     case '9': 
     case '0': 
      i = Integer.parseInt(str); 
      break; 
     default: 
      System.out.println ("Should start with fixnumber"); 
    } 
    System.out.println (i); 
} 

雖然較短的辦法就是做的Integer.parseInt調用,處理NumberFormatException的那個可能會發生 - 那麼你根本不需要切換開關。

void convert(String str) 
{ 
    try { 
     int i = Integer.parseInt(str); 
     System.out.println (i); 
    } catch (NumberFormatException e) { 
     System.out.println ("Should start with fixnumber"); 
    } 
} 

您需要return i;並將方法簽名從void轉換爲int,或以其他方式公開中的數據以使其值得。

+0

是的,java抱怨.startsWith()以及我試圖在遊戲中添加布爾值。我如何得到它與java的工作?幫助,感激! –

+0

取決於你想要做什麼......如果你想把字符串轉換爲int,那麼我會更新我的答案。 –

+0

非常感謝! –

1

x是一個字符串,如果你測試編號。 嘗試:

case "string1" 
.. 
break; 
case "string2" 
.. 
break; 
etc... 
+0

對於Java <1.7.x不適用。 – Makoto

+0

請注意,只能在Java 7中工作。 – tomtheguvnor

0

您的x是一個字符串。 switch語句試圖將其與整數值進行比較。你需要的東西是這樣的:

switch (Integer.parseInt(x)) 
{ 
    // etc... 

編輯:其實,現在我看到字符串應該是一個startsWith調用的結果,我完全糊塗了什麼這個代碼是試圖做。

+0

我認爲作者正試圖測試字符串是否以數字開頭。將IMO更好地跳過開關,做一個parseInt並正確處理格式異常。 –

+0

我想解析字符串使用不合適的方法,謝謝charAt()和try catch,謝謝! –

1

如果你想測試看看輸入的字符串是不是整數,那麼我認爲沒有理由將switch()放在第一位。捕獲嘗試使用該函數時引發的異常將會更好。

例子:

void convert(String str) { // Heads-up: convert has <package> visibility 
    int i = 0; 
    try { 
     i = Integer.parseInt(str); 
     System.out.println(i); 
    } catch (NumberFormatException nfe) { 
     System.out.println ("Should start with fixnumber"); 
    } 
}