关于Java:我可以读取一个字符串,然后使用它作为整数吗?

Can I read a string and then use it as an integer?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to convert string to int in Java?

我的代码应该读取字符串,然后执行相应的操作,但是如果该字符串是一行数字,我需要这行作为一个整数(int),而不是字符串。可以这样做吗?


使用integer.valueof:

1
int i = Integer.valueOf(someString);

(还有其他选项。)


看看静态方法Integer.parseInt(String string)。这种方法是重载的,并且能够在十进制以外的其他数字系统中读取值。如果string不能被解析为整数,那么该方法将抛出一个NumberFormatException,它可以被如下捕获:

1
2
3
4
5
6
string ="1234"
try {
   int i = Integer.parseInt(string);
} catch (NumberFormatException e) {
   System.err.println(string +" is not a number!");
}


除了Dave和Wullxz所说的,您还可以使用正则表达式来确定测试字符串是否符合您的格式,例如。

1
2
3
4
5
6
7
8
import java.util.regex.Pattern;
...

String value ="23423423";

if(Pattern.matches("^\\d+$", value)) {
   return Integer.valueOf(value);
}

使用正则表达式,还可以恢复其他类型的数字,如double。

1
2
3
4
5
6
7
String value ="23423423.33";
if(Pattern.matches("^\\d+$", value)) {
    System.out.println(Integer.valueOf(value));
}
else if(Pattern.matches("^\\d+\\.\\d+$", value)) {
    System.out.println(Double.valueOf(value));
}

我希望这有助于解决你的问题。

编辑

另外,正如wullxz所建议的,您可以使用Integer.parseInt(String)而不是Integer.valueOf(String)parseInt返回intvalueOf返回Integer实例。从性能角度来看,推荐使用parseInt