Я постоянно получаю NumberFormatException
за свою строку, и я не знаю, почему. Кажется, что при компиляции он работает нормально, и я не могу понять, что не так с кодом, из-за которого он не запускается.
Вот скриншот того, что показывает.
Как указано выше, я не могу найти причину, по которой мой код не работает. Все это выглядит правильно для меня и работало нормально до последних нескольких методов.
public static int loadArray(int[] numbers) {
System.out.print("Enter the file name: ");
String fileName = keyboard.nextLine();
File file = new File(fileName);
BufferedReader br;
String line;
int index = 0;
try {
br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
numbers[index++] = Integer.parseInt(line);
if (index > 150) {
System.out.println("Max read size: 150 elements. Terminating execution with status code 1.");
System.exit(0);
}
}
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file " + fileName + ". Terminating execution with status code 1.");
System.exit(0);
}catch(IOException ie){
System.out.println("Unable to read data from file. Terminating execution with status code 1.");
System.exit(0);
}
return index;
}
Я хочу использовать свой переключатель, чтобы иметь возможность находить разные значения в массиве, но я даже не могу правильно загрузить файл массива.
Проблема в том, что вы читаете всю строку.
while ((line = br.readLine()) != null)
Вы не можете анализировать целое число на основе всей строки с пробелами.
У вас есть два варианта:
String[]
в свой loadArray
метод.loadArray
и разделите строку пробелом. Затем вы можете перебирать содержимое этого массива и при необходимости преобразовывать каждый в int.Вы получаете NumberFormatException во время работы приложения, потому что это RuntimeException, и оно предназначено для такой работы.
Проблема с вашим решением в том, что вы пытаетесь проанализировать int из всей строки в файле.
«123, 23, -2, 17» — это не одно целое число.
Итак, вы должны сделать следующее:
вместо numbers[index++] = Integer.parseInt(line);
String[] ints = line.split(", ");
for(i = 0; i < ints.length; i++ ){
numbers[index++] = Integer.parseInt(ints[i]);
}
как мне напечатать то, что вы сказали выше? Я почему-то не могу скомпилировать сейчас, когда пробовал. Спасибо за быстрый ответ!