【发布时间】:2016-04-28 12:22:10
【问题描述】:
我有一个由数字组成的 data.txt 文件
12 45 345 500 45.67684 33
一旦 readData 方法被执行,它应该只打印整数值,并且打印元素对任何其他类型都无效,然后像这样继续
readData("data.txt") 将 打印出以下内容: 12 45 345 500 元素无效 33
我的问题是,一旦打印了元素无效语句,我的代码就不会继续打印 33,它只会停在 12 45 345 500 元素无效
import java.io.*;
import java.util.*;
public class Ex7 {
public static void readData(String nameFile){
try{
BufferedReader br = new BufferedReader(new FileReader(nameFile));
String line = br.readLine();
int i = 0;
while((line != null)){
try{
String[] lines = line.split(" ");
int[] result = new int[lines.length];
result[i] = Integer.parseInt(lines[i]);
if(result[i] ==(int)result[i]){
System.out.print(result[i] + " ");
}
i++;
}
}
}catch(NumberFormatException e){
System.out.println("element not valid " );
}catch(IOException e){
System.out.println("IO error");
System.exit(0);
}
}
public static void main (String[] args){
readData("data.txt");
}
}
【问题讨论】:
-
您的 NumberFormatException 在 while 循环之外被捕获,我建议您验证 try-、while- 和 catch-语句的括号。
-
你的 try catch 无效,你有 2 个 try 一个没有关闭。如果您不想对代码进行重大更改,您还应该在 while 循环本身中选择 numberformatexception。
-
顺便说一句 while((line != null)) 当你在 while 中处理异常时,它永远不会退出,你必须这样做。
-
如果你的缩进不是那么随意,那么很容易看出哪些块在哪些块中
-
谢谢大家,你们帮了大忙。非常感谢
标签: java file io bufferedreader