关于我正在写的程序的另一个问题叫做“飞行”。在我的测试人员中,我正在从Flight类创建一个名为myFlight的对象。该对象有几个字段(航班名称,行驶里程等),但我正在做的是从一个名为input.txt的文件中读取数据并尝试将其放入我创建的对象中。我正在阅读的文件有五行信息。出于某种原因,我不能完全正确,如果有人能帮助我解决这个问题,我将非常感激。
这是包含Flight类所有字段的构造函数:
public Flight(String name, int num, int miles, String origin, String destination)
{
Airlinename = name;
flightnumber = num;
numofmiles = miles;
Origincity = origin;
Destinationcity = destination;
}
我的程序中我创建对象并尝试从文件中读取数据的部分。我在课堂上创建了一个空白构造函数,因为我不确定在创建它时是否应该在对象中放置任何东西。
Flight myFlight = new Flight();
File myFile = new File("input.txt");
Scanner inputFile = new Scanner(myFile);
while (inputFile.hasNext())
{
myFlight = inputFile.nextLine();
}
inputFile.close();
}
}
答案 0 :(得分:1)
如果您使用特殊字符,则需要修改程序以便正确阅读它们。
Scanner inputFile = new Scanner(myFile, "UTF-8");
另一方面,如果文本文件包含以下内容,则对nextInt()
的后续调用可能会生成运行时异常。
Gran España
1
1001
New York
Los Angeles
如果是这种情况,那么阅读应该是不同的。
myFlight = new Flight(inputFile.nextLine(),
Integer.parseInt(inputFile.nextLine()),
Integer.parseInt(inputFile.nextLine()),
inputFile.nextLine(),
inputFile.nextLine());
与任何程序一样,当添加更多条件来改进模型时,它需要越来越多的代码。
祝你好运。答案 1 :(得分:0)
试
myFlight = new Flight(inputFile.next(), inputFile.nextInt(),
inputFile.nextInt(), inputFile.next(), inputFile.next());
答案 2 :(得分:0)
您无法直接将字符串行指定给对象,您需要将该行解析为部分并逐个为变量赋值。
答案 3 :(得分:0)
您的输入文字是如何组织的? Scanner的nextLine()
方法返回一个String对象,绝对不能将其分配给Flight类型。有不同的方法可以在扫描仪中获取不同的值,如nextInt(), nextFloat()
。
基本上你可以这样尝试
Flight myFlight = new Flight();
myFlight.setFlightName(inputFile.next());
myflight.setMiles(inputFile.nextInt();
等
这只是一个示例,您需要检查input.txt文件中的格式。