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 ); |
(还有其他选项。)
- 是的,会的。谢谢
- 这是可行的,但有不必要的拳击和拆箱。对原始的int最好使用Integer.parseInt(...)。
- 是的。根据文档,valueof返回一个整数对象,而parseint返回一个原语int,这就是您想要的。(DOCS.Oracle)COM/JavaSe/ 7/DOCS/API/Java/Lang//Helip;
- 我不太清楚,因为标题说的是"整数"(但小写),正文说的是"int"。我发现拳击不太可能引起手术时机问题。
- 这对OP来说可能不是问题,但对于未来寻求答案的编码器来说可能是问题。在提出valueOf方法时,至少应提及。
- @wullxz在链接文档中明确提到了这个问题;IMO这就足够了——请随意编辑答案。
- 我将同时尝试valueof和integer.parsing。不管怎样,谢谢大家
- @安杰洛米科他们都会工作,他们做同样的事情(以他们最简单的形式)——关于自动氧化的评论是正确的;如果你需要你的代码尽可能快,或者真正需要一个int,parseInt是一个更好的选择。我倾向于坚持对象,因为我在Java中不做大量的数字密集型工作。
- 我真的不想让我的代码更快,只需要一些有用的东西,我对Java是新的,所以我的主管除了正确的代码,不需要任何其他的东西。
看看静态方法Integer.parseInt(String string)。这种方法是重载的,并且能够在十进制以外的其他数字系统中读取值。如果string不能被解析为整数,那么该方法将抛出一个NumberFormatException,它可以被如下捕获:
除了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返回int而valueOf返回Integer实例。从性能角度来看,推荐使用parseInt。
- 我建议你把你对valueOf的使用分别改为parseInt和parseDouble。(见戴夫回答下的评论)
- @wullxz非常好;从性能角度来看,建议使用(+1)方法。