我必须编写一个支持扩展的程序。我有FileNotFound异常的问题。程序询问文件的名称。我的任务是在没有给定文件的情况下编写特殊信息,并再次询问,直到用户编写现有文件名。我知道如何写一个没有文件的特殊信息,但我不知道如何再次询问文件的名称(我只知道必须使用readNP方法完成)。 这是代码:
import.java.io.*;
import java.util.* ;
class Reading{
static BufferedReader sysin =
new BufferedReader(new InputStreamReader(System.in));
String readNP() throws IOException{
// ask about file name
System.out.print("file name ");
String filename;
filename = sysin.readLine() ;
return filename.trim();
}
void read(ArrayList<Double> a) throws IOException{
// reading from file
int nr=1 ;
String name = readNP();
BufferedReader br = new BufferedReader(new FileReader(name));
String line;
while ((line = br.readLine()) != null){
a.add(new Double(line));
nr++;
}
br.close() ;
}
}
class Exceptions{
static void average(ArrayList<Double> a){
double s=0.0d;
for (int i=0; i<a.size(); i++)
s+=a.get(i).doubleValue();
System.out.println("average from numbers in table: "+s/a.size());
}
public static void main(String[] args)throws IOException{
ArrayList<Double> a = new ArrayList<Double>();
Reading r = new Reading();
try{
r.read(a);
average(a);
} catch(FileNotFoundException e){
System.out.println("File not found");
}
}
}
答案 0 :(得分:0)
我会在readNP()
函数中添加测试文件名的存在(以及它不是目录的名称):
String readNP() throws IOException{
// ask about file name
for (;;) {
System.out.print("file name ");
String filename;
filename = sysin.readLine();
File f = new File(filename);
if (f.exists() && !f.isDirectory()) return filename.trim();
System.out.println("file absent"); //message if the there is no file with this name
}
}