嗯,我很无聊,所以我想做一个二进制
此代码负责检查String是否是数字,而不是将其解析为int。
if (checkNumber(input)) {
try {
number = Integer.parseInt(input);
} catch (NumberFormatException ex) {
log(ex.getMessage());
}
} else {
toDecimal();
}
这是用于检查字符串的实际布尔值。
private static boolean checkNumber(String input) {
for (char c : input.toCharArray()) {
if (!Character.isDigit(c)) {
return false;
}
}
return true;
}
这是NumberFormatException的输出:
java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
我只是不明白为什么Java会抛出这个错误。有什么想法吗?
Integer.parseInt(String, 2);是正确的答案。
因为您的字符串表示不是对位进行消减。它正在解析30个十进制数字,这肯定不适合int数据类型。如果要解析基2,则需要传入radix参数以解析Int
Java中整数的大小是-2,147,483,648到2,147,483,647。您的输入超过了这个值。
可以尝试使用long,最大值是9,223,372,036,854,775,807。
也许您应该考虑使用BigInteger。
编辑:我不好,没注意到你想解析二进制文件,应该仔细阅读。
因为< code > integer . parse int(String)默认基数为10。
您需要使用Integer。parseInt(String,int)
并为要解析的值指定正确的基数。对于二进制(以2为基数),它将2
int value = Integer.parseInt("00010010", 2);
当前正在编辑代码以创建跳过列表,我正在尝试读取一个文件,其中包含需要插入、搜索或删除的数据(分别由i、s、d表示)。 当试图运行它时,我被抛出数字格式异常,当它在catch语句中打印堆栈跟踪时,它看起来好像没有读取第一个字符,应该是“i”。 以下是我的主代码当前的样子,因为这似乎就是问题所在 这是我的示例输入数据文本文件的样子 当它运行并吐回堆栈跟踪时,它会说 所以我现在猜测,出于某种原因,当50
当我尝试初始化Tomcat服务器时,出现以下错误: HTTP状态500–内部服务器错误 类型异常报告 消息java。lang.NumberFormatException:对于输入字符串:“0:0:0:0:0:0:0:0:1” 说明服务器遇到意外情况,无法满足请求。 例外 组织。阿帕奇。贾斯珀。JasperException:java。lang.NumberFormatException:对于输入字