public static int parseIntOrDefault(String value, int defaultValue) {
int result = defaultValue;
try {
result = Integer.parseInt(value);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int endIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex, endIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
int foo;
String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception
String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception
try {
foo = Integer.parseInt(StringThatCouldBeANumberOrNot);
} catch (NumberFormatException e) {
//Will Throw exception!
//do something! anything to handle the exception.
}
try {
foo = Integer.parseInt(StringThatCouldBeANumberOrNot2);
} catch (NumberFormatException e) {
//No problem this time, but still it is good practice to care about exceptions.
//Never trust user input :)
//Do something! Anything to handle the exception.
}
public static int strToInt(String str){
int i = 0;
int num = 0;
boolean isNeg = false;
// Check for negative sign; if it's there, set the isNeg flag
if (str.charAt(0) == '-') {
isNeg = true;
i = 1;
}
// Process each character of the string;
while( i < str.length()) {
num *= 10;
num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).
}
if (isNeg)
num = -num;
return num;
}
30条答案
按热度按时间ruarlubt16#
除了前面的答案之外,我想添加几个函数。这些是使用它们时的结果:
实施:
ny6fqffe17#
一个方法是parseint(string)。它返回原语int:
第二个方法是valueof(string),它返回一个新的integer()对象:
pb3s4cty18#
这是一个完整的程序与所有条件的积极和消极的不使用库
ljsrvy3e19#
整数.解码
你也可以使用
public static Integer decode(String nm) throws NumberFormatException
.它也适用于基8和基16:
如果你想得到
int
而不是Integer
您可以使用:拆箱:
Integer.decode("12").intValue();
ztyzrc3y20#
如前所述,apache commons的
NumberUtils
我能做到。它回来了0
如果它不能将字符串转换为int。您还可以定义自己的默认值:
例子:
1cklez4t21#
你可以试试这个:
使用
Integer.parseInt(your_string);
转换String
至int
使用Double.parseDouble(your_string);
转换String
至double
####示例vxbzzdmp22#
对于普通字符串,可以使用:
对于字符串生成器和字符串缓冲区,可以使用:
0vvn1miw23#
我有点惊讶,没有人提到以字符串作为参数的整数构造函数。
所以,这里是:
Java8-整数(字符串)。
当然,构造函数将返回
Integer
,并且解装箱操作将值转换为int
.注1:值得一提的是:这个构造函数调用
parseInt
方法。注2:已弃用:
@Deprecated(since="9")
- java 文档。brtdzjyr24#
另一种解决方案是使用apache commons的NumberRutils:
apache实用程序很好,因为如果字符串是无效的数字格式,那么总是返回0。因此,你省去了试抓块。
apache NumberRutils api 3.4版
nszi6y0525#
我有办法,但不知道有多有效。但效果不错,我想你可以改进一下。另一方面,我用junit做了几个测试,哪一步是正确的。我附上了功能和测试:
使用junit进行测试:
whitzsjs26#
我们可以使用
parseInt(String str)
方法Integer
用于将字符串值转换为整数值的 Package 器类。例如:
这个
Integer
类还提供valueOf(String str)
方法:我们也可以使用
toInt(String strValue)
用于转换的numberutils实用程序类:zphenhs427#
好吧,需要考虑的一个非常重要的点是整数解析器抛出javadoc中所述的numberformatexception。
在尝试从拆分参数获取整数值或动态解析某些内容时,处理此异常非常重要。
ff29svar28#
您可以使用以下任一选项:
Integer.parseInt(s)
Integer.parseInt(s, radix)Integer.parseInt(s, beginIndex, endIndex, radix)
Integer.parseUnsignedInt(s)Integer.parseUnsignedInt(s, radix)
Integer.parseUnsignedInt(s, beginIndex, endIndex, radix)Integer.valueOf(s)
bvpmtnay29#
手动执行:
x7rlezfr30#
将字符串转换为int比仅转换数字更复杂。您已经考虑了以下问题:
字符串是否只包含数字0-9?
字符串之前或之后的-/+是怎么回事?有可能吗(指会计数字)?
最大/最小无穷大是怎么回事?如果字符串是999999999999999999会发生什么?机器能把这个字符串当作int吗?