package com.geelou.test;
public class ErrTest {
public static void main(String[] args) {
String numString = "1 ";
System.out.println(Integer.parseInt(numString));
}
}
Exception in thread "main" Java.lang.NumberFormatException: For input string: "1 "at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)at java.lang.Integer.parseInt(Integer.java:458)at java.lang.Integer.parseInt(Integer.java:499)at com.geelou.test.ErrTest.main(ErrTest.java:6)
在Android中这个序列是否正确,我打算把得到的edittext中的值转换为整数.
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
logcat 出现了如下错误. 05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: unable to parse '' as integer
在使用 startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
之前
判断条件:
if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) {
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
}
题主要做一个进制转换.并且限定范围为 30位的数 (1073741823) 或者(0111111111111111111111111111111). 问题出现在试图转换 111111111111111111111111111111的时候,出现 NumberFormatException.
此代码是检查输入如果是二进制就转换为int型数值
if (checkNumber(input)) {
try {
number = Integer.parseInt(input);
} catch (NumberFormatException ex) {
log(ex.getMessage());
}
} else {
toDecimal();
}
这是检查 String的布尔返回值方法的代码.
private static boolean checkNumber(String input) {
for (char c : input.toCharArray()) {
if (!Character.isDigit(c)) {
return false;
}
}
return true;
}
出现异常:
java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
因为 Integer.parseInt(String)
默认是十进制.
所以需要使用 Integer.parseInt(String, int)
并且指定要转换的n进制的数字的n。比如二进制是2.
int value = Integer.parseInt(input, 2);
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛