Я не могу понять, почему я получаю исключение нулевого указателя. Я пытаюсь преобразовать номера строк, которые пользователь вводит после подсказки, и я хочу разграничить это либо пробел «запятая», либо запятая и пробел »,«.Преобразование строкового массива в int с разделителем
Вот мой код, я получаю исключение нулевого указателя в 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");
Ok Спасибо всем, я получил это работает инициализация длины массива Nums к длине массива держателя, как предложено в принятом ответе. Как это:
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)
Вы не указали размер массива? –
Как вы думаете, если я использую список, он будет работать без объявления размера? – salty
Да, попробуйте использовать список. –