2012-01-22 205 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"); 
    } 
}