我可以读取一个字符串然后将其用作整数吗?

时间:2013-01-05 23:24:05

标签: java string

  

可能重复:
  How to convert string to int in Java?

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

3 个答案:

答案 0 :(得分:6)

使用Integer.valueOf

int i = Integer.valueOf(someString);

(还有其他选择。)

答案 1 :(得分:3)

查看静态方法Integer.parseInt(String string)。此方法过载,并且还能够读取除十进制系统之外的其他数字系统中的值。如果string无法解析为整数,则该方法会抛出一个NumberFormatException,可以按如下方式捕获:

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

答案 2 :(得分:2)

除了 Dave wullxz 之外,您还可以使用正则表达式来查明测试的字符串是否与您的格式匹配,例如

import java.util.regex.Pattern;
...

String value = "23423423";

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

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

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是推荐的。