目前在我的编程课程中,我们正在学习I/O流。不幸的是,我的老师已经决定不来过去的两个实验室,并取消了最后一次讲座,使得我的班级和我需要自己学习基本的I/O流知识完成我们最新的任务。
我们的最新任务是从文本文件“ListOfAirlines.txt”中读取信息,并将其存储在三个不同的类(Location、Designator和Airline)中。Airline类应该有Location类和Designator类的对象。
问题在于我的程序似乎不想从文件中读取输入。以下是我迄今为止的程序代码,虽然还没有完成,但我尝试测试目前已完成的部分以查看它是否有效。每次运行时,try之后的catch块是唯一运行的部分,尽管我输入的是确切的文件名。我还收到一个运行时错误,说在第39行(循环开始的地方)有问题。我真的不知道我在做什么,大多数时间我只是在尝试根据书中的例子编写这个特定的程序。
我们的最新任务是从文本文件“ListOfAirlines.txt”中读取信息,并将其存储在三个不同的类(Location、Designator和Airline)中。Airline类应该有Location类和Designator类的对象。
问题在于我的程序似乎不想从文件中读取输入。以下是我迄今为止的程序代码,虽然还没有完成,但我尝试测试目前已完成的部分以查看它是否有效。每次运行时,try之后的catch块是唯一运行的部分,尽管我输入的是确切的文件名。我还收到一个运行时错误,说在第39行(循环开始的地方)有问题。我真的不知道我在做什么,大多数时间我只是在尝试根据书中的例子编写这个特定的程序。
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()方法位于我们所需的input类下。它只是询问用户要求文件名,然后将其存储在一个字符串中。
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()
在哪里?你能分享一下吗? - AlexanderSystem.out.println(new File(file).getAbsolutePath())
... 在循环中出现错误的原因是扫描程序无法创建并且输入流为空。它不能在空值上调用hasNextLine。 - Numeron