为什么我在编译正确的情况下不断得到 java.lang.NumberFormatException?
Why am I continuously getting a java.lang.NumberFormatException although it compiles correctly?
我的字符串不断收到 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)
您无法根据包含 space 的整行解析整数。
您有两个选择:
- 在 调用该方法之前阅读 中的行并将其拆分为 space,然后将
String[]
传递给您的 loadArray
方法.
- 省略
loadArray
的参数并用 space 拆分该行。然后,您可以遍历该数组的内容,并根据需要将每个内容转换为 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]);
}
我的字符串不断收到 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)
您无法根据包含 space 的整行解析整数。
您有两个选择:
- 在 调用该方法之前阅读 中的行并将其拆分为 space,然后将
String[]
传递给您的loadArray
方法. - 省略
loadArray
的参数并用 space 拆分该行。然后,您可以遍历该数组的内容,并根据需要将每个内容转换为 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]);
}