我的字符串不断得到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;
}
我想使用开关来在数组中找到不同的值,但是我什至无法正确加载数组文件。
答案 0 :(得分:0)
在应用程序工作期间,您会遇到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]);
}
答案 1 :(得分:-1)
问题是您正在读整行。
while ((line = br.readLine()) != null)
您不能基于整行中带空格的整数进行解析。
您有两种选择:
String[]
传递到您的loadArray
方法中。loadArray
的参数,并按空格分隔行。然后,您可以遍历该数组的内容,并根据需要将每个数组转换为一个int。