需要帮助解析数字的字符串并将它们放入一个int数组中

时间:2018-03-15 04:42:24

标签: java

public class HugeInteger {
    private final int SIZE = 40;
    private int[] bigArray = new int[SIZE];

    public void parse (String str) {
        String[] s = str.split("\\D+");
        for (int i = 0; i < s.length; i++) {
            bigArray[i] = Integer.parseInt(s[i]);
        }
    }

    public void printArray() {
        for (int i = 0; i < SIZE; i++) {
            System.out.print(bigArray[i]);
        }
    }
}

public class IntegerTest {

    public static void main(String[] args) {
        String userStr = "";
        Scanner input = new Scanner(System.in);

        System.out.print("Enter first HugeInteger: ");
        userStr = input.nextLine();

        HugeInteger big = new HugeInteger();
        big.parse(userStr);
        big.printArray();
    }
}

基本上,如果我输入一个长度超过10位的字符串,它会抛出异常并说:

  

线程“main”中的异常java.lang.NumberFormatException:用于输入   字符串:“12345367899”at   java.lang.NumberFormatException.forInputString(未知来源)at   java.lang.Integer.parseInt(未知来源)at   java.lang.Integer.parseInt(未知来源)at   HugeInteger.parse(HugeInteger.java:9)at   IntegerTest.main(IntegerTest.java:13)

不确定这意味着什么或如何解决它。谢谢!

3 个答案:

答案 0 :(得分:0)

如您所知int数据类型是32-bit签名的二进制补码整数和

  

int范围是-2^312^31 - 1,即-21474836482147483647

我认为你可以使用long作为64-bit签名的二进制补码整数。

答案 1 :(得分:0)

我刚被告知我必须使用charAt()来解析数组。这样的事情呢?

public void parse (String str) {
        for (int i = 0; i < str.length(); i++) {
            int x = str.charAt(i);  
            bigArray[i] = x;
        }
    }

答案 2 :(得分:0)

如果您的输入允许超出 int 范围的数字,则应使用long。

以下代码示例:

class HugeInteger {
    private final int SIZE = 40;
    private long[] bigArray = new long[SIZE];

    public void parse (String str) {
        String[] s = str.split("\\D+");
        for (int i = 0; i < s.length; i++) {
            String x = s[i];
            bigArray[i] = Long.parseLong(x);
        }
    }

    public void printArray() {
        for (int i = 0; i < SIZE; i++) {
            System.out.print(bigArray[i]);
        }
    }
}

public class IntegerTest {

    public static void main(String[] args) {
        String userStr = "";
        Scanner input = new Scanner(System.in);

        System.out.print("Enter first HugeInteger: ");
        userStr = input.nextLine();

        HugeInteger big = new HugeInteger();
        big.parse(userStr);
        big.printArray();
    }
}
相关问题