因此,我正在阅读以下内容:

10011011001;0110,1001,1001,0,10,11

并在其上运行以下代码:
        String[] parts = line.split(";");
        System.out.println("Part 1 = " + parts[0]);
        System.out.println("Part 2 = " + parts[1]);
        System.out.println(isNumeric(parts[0]));
        int original = Integer.parseInt(parts[0]);
        System.out.println("Original = " + original);
isNumeric方法是我编写的用于调试的方法。
public static boolean isNumeric(String str) {
    for (char c : str.toCharArray()) {
        if (!Character.isDigit(c)) {
            return false;
        }
    }
    return true;
}

输出:
Line = 10011011001;0110,1001,1001,0,10,11
Part 1 = 10011011001
Part 2 = 0110,1001,1001,0,10,11
true
Exception in thread "main" java.lang.NumberFormatException: For input string: "10011011001"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at str_substitution.main(str_substitution.java:45)

不知道为什么会出现这种异常,显然该字符串是数字,并且有效。

最佳答案

10,011,011,001太大,无法容纳32位整数。

也许您的意思是使用longparseLong()

还是您实际上是要使用parseInt(parts[0], 2)将其解析为二进制数(十进制1241)?

Here you can check the minimum and maximum values for each Java data type

10-04 23:36