我无法弄清楚为什么我得到一个空指针异常。我正在尝试转换用户在提示后输入的行号,并且我想要将其标记为空格“”逗号“,”或逗号和空格“,”。
这是我的代码,我在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)
答案 0 :(得分:2)
您的空指针异常是由于您已将nums数组初始化为null,然后尝试在for循环中“指向”它。您可能会丢失int[] nums = null
并添加:
int[] nums = new int[holder.length];
紧接在for循环之前的(显然是在你创建了holder数组之后)。
答案 1 :(得分:1)
您已设置
int[] nums = null;
然后尝试访问
num[i]
它会给你NullPointerException。首先需要构造数组以保存所需数量的元素:
int[] nums = new int[holder.length]
答案 2 :(得分:0)
最好在将holder[i]
解析为整数之前打印它,以查看其中的内容。
我猜测holder[i]
没有整数的有效值。