java.lang.NumberFormatException 正在读取文件
java.lang.NumberFormatException while reading from a file
我正在尝试创建一个基本程序,它读取一个包含未知数量的矩阵排列的数字的文件,创建一个字符串格式的数组列表来读取它,然后将其解析为 int 以供多个其他进程使用.我在解析时得到 java.lang.NumberFormatException
,我知道这可能是因为一个空白值被解析为一个 int。我看过其他问题,但似乎无法解决。这是代码的一部分:
public static void main(String[] args) {
try {
br = new BufferedReader(new FileReader(theFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] aLine = line.split("/t");
br.readLine();
numLine.add(aLine);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (Exception e) {
}
}
for (int i=0; i < numLine.size(); i++){
for (int j = 0; j < numLine.get(i).length; j++){
System.out.print(numLine.get(i)[j] + " ");
// if (!((numLine.get(i)[j]).equals("\t"))){
intList.add(Integer.parseInt(numLine.get(i)[j]));
// }
}
System.out.println();
}
}
这是错误的内容:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6 10 9 10 12 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at readingTextFiles.Main.main(Main.java:34)
请考虑到我是一名新手程序员,所有这些都是从研究中得到的,所以我不太确定这个理论是如何运作的。
程序的输出是什么?制表符由 \t
而不是 /t
(line.split("\t");
) 表示。此外,您将需要添加验证检查,以确保您阅读的每一行实际上都是 Integer
如@kayKay 所述更改分隔符,您正在尝试再次阅读该行。我认为你不应该 ??
public static void main(String[] args) {
try {
br = new BufferedReader(new FileReader(theFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] aLine = line.split("\t"); // Also as kaykay mentioned change /t to \t
//br.readLine(); // You are reading the line again - Comment it out
numLine.add(aLine);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (Exception e) {
}
}
for (int i=0; i < numLine.size(); i++){
for (int j = 0; j < numLine.get(i).length; j++){
System.out.print(numLine.get(i)[j] + " ");
// if (!((numLine.get(i)[j]).equals("\t"))){
intList.add(Integer.parseInt(numLine.get(i)[j]));
}
System.out.println();
}
我正在尝试创建一个基本程序,它读取一个包含未知数量的矩阵排列的数字的文件,创建一个字符串格式的数组列表来读取它,然后将其解析为 int 以供多个其他进程使用.我在解析时得到 java.lang.NumberFormatException
,我知道这可能是因为一个空白值被解析为一个 int。我看过其他问题,但似乎无法解决。这是代码的一部分:
public static void main(String[] args) {
try {
br = new BufferedReader(new FileReader(theFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] aLine = line.split("/t");
br.readLine();
numLine.add(aLine);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (Exception e) {
}
}
for (int i=0; i < numLine.size(); i++){
for (int j = 0; j < numLine.get(i).length; j++){
System.out.print(numLine.get(i)[j] + " ");
// if (!((numLine.get(i)[j]).equals("\t"))){
intList.add(Integer.parseInt(numLine.get(i)[j]));
// }
}
System.out.println();
}
}
这是错误的内容:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6 10 9 10 12 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at readingTextFiles.Main.main(Main.java:34)
请考虑到我是一名新手程序员,所有这些都是从研究中得到的,所以我不太确定这个理论是如何运作的。
程序的输出是什么?制表符由 \t
而不是 /t
(line.split("\t");
) 表示。此外,您将需要添加验证检查,以确保您阅读的每一行实际上都是 Integer
如@kayKay 所述更改分隔符,您正在尝试再次阅读该行。我认为你不应该 ??
public static void main(String[] args) {
try {
br = new BufferedReader(new FileReader(theFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] aLine = line.split("\t"); // Also as kaykay mentioned change /t to \t
//br.readLine(); // You are reading the line again - Comment it out
numLine.add(aLine);
}
} catch (IOException e){
} finally {
try {
br.close();
} catch (Exception e) {
}
}
for (int i=0; i < numLine.size(); i++){
for (int j = 0; j < numLine.get(i).length; j++){
System.out.print(numLine.get(i)[j] + " ");
// if (!((numLine.get(i)[j]).equals("\t"))){
intList.add(Integer.parseInt(numLine.get(i)[j]));
}
System.out.println();
}