1

我不知道为什么会出现空指针异常。我正在尝试转换用户在提示后输入的行号,并且我想将其分隔为空格“”逗号“”或逗号和空格“,”。

这是我的代码,我在 nums[i]=Integer.parseInt(holder[i]); 上得到一个空指针异常;线。我只是想不通为什么。

String again="n";
    int[] nums = null;

    do {
        Scanner scan = new Scanner (System.in);

        System.out.println("Enter a sequence of integers separated by a combination of commas or spaces: ");
        String in=scan.nextLine();
        String[] holder=in.split(",| |, ");

            for (int i=0; i<holder.length; i++) {

                nums[i]=Integer.parseInt(holder[i]);
                System.out.print(nums[i]);
            }


    }
    while (again=="y");

好的,谢谢大家,我通过按照接受的答案中的建议将 nums 数组的长度初始化为 holder 数组的长度来使其工作。像这样:

int[] nums = new int[holder.length];

不过,我还有第二个问题,因为我的正则表达式似乎失败了,如果用“,”或“”而不是“,”来描述,我可以阅读它有什么想法吗?

这是我的错误:

Enter a sequence of integers separated by a combination of commas or spaces: 
    1, 2, 3
    Exception in thread "main" 1java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at SortComparison.main(SortComparison.java:20)
4

3 回答 3

2

您的空指针异常是由于您已将 nums 数组初始化为空,然后尝试在 for 循环中“指向”它。您可以丢失int[] nums = null并添加:

int[] nums = new int[holder.length];

在 for 循环之前(显然,在您创建了持有者数组之后)。

于 2013-04-07T10:23:35.883 回答
1

你已经设置

int[] nums = null;

然后尝试访问

num[i]

这给了你 NullPointerException。您首先需要构造数组以保存所需数量的元素:

int[] nums = new int[holder.length] 
于 2013-04-07T10:23:37.197 回答
0

您最好holder[i]在将其解析为整数之前打印您的,以查看其中的内容。我猜这holder[i]不是整数的有效值。

于 2013-04-07T10:21:23.267 回答