当前位置: 首页 > 知识库问答 >
问题:

JavaNumberFormatException?

戚明朗
2023-03-14

嗯,我很无聊,所以我想做一个二进制

此代码负责检查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);是正确的答案。

共有3个答案

衡高寒
2023-03-14

因为您的字符串表示不是对位进行消减。它正在解析30个十进制数字,这肯定不适合int数据类型。如果要解析基2,则需要传入radix参数以解析Int

巩衡
2023-03-14

Java中整数的大小是-2,147,483,648到2,147,483,647。您的输入超过了这个值。

可以尝试使用long,最大值是9,223,372,036,854,775,807。

也许您应该考虑使用BigInteger。

编辑:我不好,没注意到你想解析二进制文件,应该仔细阅读。

商弘义
2023-03-14

因为< 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:对于输入字

相关问答

相关文章

相关阅读