Java NumberFormatException?

标签 java binary decimal

嗯,我很无聊,所以我想做一个二进制>十进制转换器。我将转换器的上限设置为 30 位数字 (1073741823) 或 (0111111111111111111111111111111)。我遇到的问题是,当我尝试解析 111111111111111111111111111111 时,我得到一个 NumberFormatException。这是一些代码:

此代码负责检查 String 是否为数字,然后将其解析为 int。

if (checkNumber(input)) {
        try {
        number = Integer.parseInt(input);
        } catch (NumberFormatException ex) {
            log(ex.getMessage());
        }
    } else {
        toDecimal();
    }

这是用于检查字符串的实际 boolean 值。

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);是正确的答案。

最佳答案

因为Integer.parseInt(String)默认以10为基数。

您需要使用Integer.parseInt(String, int)并为您尝试解析的值指定正确的基数。对于二进制(基数 2),则为 2

int value = Integer.parseInt("00010010", 2);

关于Java NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20722927/

相关文章:

java - POI条形图生成一系列有问题

java - 我需要能够捕获小数点后仅 2 位数字的小数 java,尝试了这个

python - 二进制转十进制(数学方式)

binary - Brainfuck 与 1 位存储单元?

java - 提取二进制的最后 2 位

javascript - 如何在金额字段中添加小数。 ( 0.00 )

mysql - Varchar 到 Decimal 转换返回 '0'

Java:比较字符串时顺序有区别吗?

java - 你能从字符串中引用java变量吗?

java - 查找替换的正则表达式