在编程课程中,我们正在学习I/O流。不幸的是,我的老师决定不去过去的两个实验室,并且已经取消了最后一次讲座,离开了我的班级和我自己学习I/O流的基础知识,以供我们最近的作业。从.txt文件读取输入存在严重问题
对于我们的最新作业,我们将从文本文件“ListOfAirlines.txt
”中读取信息,并将它们存储在三个不同类(位置,指示符和航空公司)中。航空公司班级要有位置和指示员班的对象。
问题是我的程序好像不想读取文件中的输入。这是我迄今为止的程序代码。它没有完成,但我试着测试我到目前为止只是为了看看它是否有效。每次运行它时,尽管我输入了确切的文件名,catch块仍是唯一运行的部分。我也得到一个运行时错误,说39行(for循环开始)有一个问题。我真的不知道自己在做什么,而且我一直试图在我的书中为这个特定的程序做例子。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class AirlineOutput {
public static void storeInfo() {
AirlineInput object = new AirlineInput();
String file = AirlineInput.enterFileName();
Scanner inputStream = null;
try {
inputStream = new Scanner(new File(file));
} catch (FileNotFoundException z) {
System.out.println("Error opening the file "+file);
}
/*
* The following creates an array for every object in the program.
* It cycles through the input stream assigning each line to a String variable.
* The String variables are then passed through to their respective object classes.
* The Location and Designator objects are passed to the airline object as the
* airline object is required to contain it's own Location and Designator objects.
*/
for (int i = 0; inputStream.hasNextLine(); i++) {
Airline[] airline = new Airline[i];
airline[i]=new Airline();
Designator[] designator = new Designator[i];
designator[i]=new Designator();
Location[] location = new Location[i];
location[i]=new Location();
String stringRead = inputStream.nextLine();
Scanner parse = new Scanner(stringRead);
String airlineName = parse.next();
String designators = parse.next();
String frequentFlyerProgram = parse.next();
String city = parse.next();
String state = parse.next();
String country = parse.next();
String website = parse.next();
location[i].setCity(city);
location[i].setCountry(country);
location[i].setState(state);
airline[i].setLocation(location[i]);
designator[i].setDesignators(designators);
airline[i].setDesignators(designator[i]);
airline[i].setName(airlineName);
airline[i].setWebsite(website);
airline[i].setFrequentFlyer(frequentFlyerProgram);}
inputStream.close();
}
}
}
.enterFileName()位于我们需要的输入类下面。这只是要求用户输入存储在字符串中的文件名。
import java.util.Scanner;
public class AirlineInput {
static String file;
public AirlineInput() {
}
public static String enterFileName() {
System.out.println("Enter the file name: ");
Scanner keyboard=new Scanner(System.in);
file=keyboard.next();
return file;
}
}
'enterFileName()'在哪里?你能分享一下吗? – Alexander
有时文件位置可能会显得有点奇怪......试试这个来找出程序在哪里查找文件System.out.println(新文件(文件))。getAbsolutePath())'......在循环中出现错误的原因是因为扫描器无法创建并且inputstream为空。它不能在空值上调用hasNextLine。 – Numeron
顺便说一句:我会建议你正确缩进你的代码。这可以使用大多数开发程序轻松完成。例如在eclipse中,它就是Shit + Alt + F。这使得代码更易读,更容易被大家理解。 – Frithjof