我正在尝试测试我的用户是否提交了敏感数据,后来将其格式化为整数。 switch语句的问题在哪里? :)
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);
}
答案 0 :(得分:2)
您正在启用 x 这是一个字符串 - 除非您使用的是Java 7,否则不能在Switch语句中使用String。
我希望错误实际上来自 str.startsWith(),其中该方法期望获取一个String(您正在检查它的开头)并返回一个布尔值,你也无法开启。
更新更正您的代码以执行我认为您尝试执行的操作:
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");
}
}
您需要返回i; 并将方法签名从 void 转换为 int ,否则会在中公开数据我让它变得有价值。
答案 1 :(得分:1)
x是一个字符串,以防你测试号码。 尝试:
case "string1"
..
break;
case "string2"
..
break;
etc...
答案 2 :(得分: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");
}
}
答案 3 :(得分:0)
您的x
是一个字符串。 switch语句正在尝试将其与整数值进行比较。你需要这样的东西:
switch (Integer.parseInt(x))
{
// etc...
编辑:实际上,现在我发现字符串应该是一个startsWith调用的结果,我对这段代码试图做的事情感到很困惑。