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所说的,您还可以使用正则表达式来确定测试字符串是否符合您的格式,例如。
| 12
 3
 4
 5
 6
 7
 8
 
 | import java.util.regex.Pattern;
...
String  value ="23423423";
if( Pattern.matches("^\\d+$" , value)) {
   return Integer .valueOf( value);
} | 
使用正则表达式,还可以恢复其他类型的数字,如double。
| 12
 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)方法。