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

Java 我可以读取字符串,然后将其用作整数吗?,java,string,Java,String,可能重复: 我的代码应该读取字符串,然后执行相应的操作,但是如果该字符串是一行数字,我需要将该行作为一个完整的数字(int)而不是字符串。可以这样做吗?使用: (还有其他选项。)使用: (还有其他选项。)查看静态方法Integer.parseInt(字符串)。此方法是重载的,并且还能够读取十进制以外的其他数字系统中的值。如果string不能被解析为整数,则该方法将抛出一个NumberFormatException,该异常可捕获如下: string = "1234" try { int i

可能重复:

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

使用:

(还有其他选项。)

使用:


(还有其他选项。)

查看静态方法
Integer.parseInt(字符串)
。此方法是重载的,并且还能够读取十进制以外的其他数字系统中的值。如果
string
不能被解析为整数,则该方法将抛出一个
NumberFormatException
,该异常可捕获如下:

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

查看静态方法
Integer.parseInt(字符串)
。此方法是重载的,并且还能够读取十进制以外的其他数字系统中的值。如果
string
不能被解析为整数,则该方法将抛出一个
NumberFormatException
,该异常可捕获如下:

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

除了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

除了Davewullxz所说的之外,您还可以使用正则表达式来确定测试的字符串是否与您的格式匹配,例如

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

是的,可以。谢天谢地,这会起作用,但有不必要的装箱和拆箱。对于原语
int
,最好使用
Integer.parseInt(…)
。根据文档,valueOf返回一个整数对象,而parseInt返回一个基元int,这就是您想要的。()我不太清楚,因为标题是“整数”(但小写),文本是“int”。我发现装箱不太可能会导致OP计时问题。这对OP来说可能不是问题,但对未来寻求答案的编码器来说可能是问题。在提出
valueOf
方法时,至少应该提到这一点。是的,这样就可以了。谢天谢地,这会起作用,但有不必要的装箱和拆箱。对于原语
int
,最好使用
Integer.parseInt(…)
。根据文档,valueOf返回一个整数对象,而parseInt返回一个基元int,这就是您想要的。()我不太清楚,因为标题是“整数”(但小写),文本是“int”。我发现装箱不太可能会导致OP计时问题。这对OP来说可能不是问题,但对未来寻求答案的编码器来说可能是问题。在提出
valueOf
方法时,至少应该提到这一点。我建议您将
valueOf
的用法分别改为
parseInt
。(见Dave回答下的评论)@wullxz很好;从性能角度来看,建议使用该方法(+1)。我建议您将
valueOf
的用法分别更改为
parseInt
parseDouble
。(见Dave回答下的评论)@wullxz很好;从性能角度来看,建议使用该方法(+1)。