2012-01-22 9 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()から実際にエラーが発生していますが、そのメソッドは文字列(開始点を確認しています)を取得し、ブール値を返します。いずれかのスイッチをオンにします。

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を扱うものの:私はあなたがやろうとしていると思う何をするようにコードを修正

UPDATEあなたがスイッチをまったく行う必要はありません。

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;のメソッドシグニチャをからintに変換するか、またはiにデータを公開してください。

+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... 

EDIT:あなたはこのようなものが必要実は、今私は、文字列がのstartsWith呼び出しの結果であると考えられることを確認することを、私はこのコードがやろうとしているかについては全く困惑しています。

+0

私は、文字列が数字で始まるかどうかをテストしようとしていると思います。IMOがスイッチをスキップし、parseIntを行い、フォーマット例外を適切に処理する方が良いでしょう。 –

+0

私は不適切なメソッドを使用して文字列を解析しようとしていますが、charAt()とtryキャッチのおかげでありがとう! –

1

の文字列がのIntegerであるかどうかをテストする場合は、最初に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"); 
    } 
}