从txt文件中读取多种数据类型到arrayList - Java

时间:2015-07-17 23:55:43

标签: java arraylist

对于这个程序,我应该从txt文件中读取,该文件包含有关汽车makemodelmpgtrunk space的信息。一个例子是:      现代      创世纪      24.6      100 并重复几个不同的汽车。 我们必须使用make和model的实例变量构造一个“Automobile”超类。然后是一个“GasEngineAuto”子类,其mpg实例变量扩展为“Automobile”。然后是一个名为“Sedan”的子类,它扩展了“GasEngine Auto”并具有主干空间的实例变量。对于作业,我们必须签署这些类,以确保它们正确。

编写一个方法来读取文件gas_sedans.txt中的信息,并将其存储在您在上一步中创建的列表中。该列表应该是此方法的唯一参数。在该方法中,打开文件,将每个轿车的信息读入适当类型的变量,调用 参数化构造函数(获取所有属性的参数的构造函数)来创建对象,然后将对象添加到列表中。从main调用此方法。

以下是我的代码。我想尝试确保在使用方法之前我可以读入arrayList。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author 
 */
public class lab10_prelab {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {
        
        ArrayList<Sedan> sedanList = new ArrayList<Sedan>();

        File myFile = new File(System.getProperty("user.dir")+"/src/gas_sedans (1).txt");
        if (!myFile.exists()){
            System.out.println("The file could not be found");
            System.exit(0);
        }

        Scanner inputFile = new Scanner(myFile);
        
        while (inputFile.hasNext())
        {
            Sedan a = new Sedan();
            a.setMake(inputFile.nextLine());
            a.setModel(inputFile.nextLine());
            inputFile.nextLine();
            a.setMPG(inputFile.nextDouble());
            inputFile.nextLine();
            a.setTrunkCapacity(inputFile.nextDouble());
            sedanList.add(a);
        }
        inputFile.close();
        }
        }

它告诉我在尝试运行程序时收到InputMismatchException通知。

2 个答案:

答案 0 :(得分:1)

您有拼写错误: automobileArrayautombileArray不同。

在您的代码中,您在变量

中的o之后缺少m
autombileArray
    ^

编辑:上午06:49 18/07/20115

  

它说当我尝试运行时收到InputMismatchException通知   该计划。

a.setModel(inputFile.nextLine());
inputFile.nextLine();//remove this line
a.setMPG(inputFile.nextDouble());
inputFile.nextLine();
a.setTrunkCapacity(inputFile.nextDouble());
inputFile.nextLine();//add here

答案 1 :(得分:0)

我做了一些改变并达成了这个。现在它说:写一个方法来显示列表。该方法应该有一个参数,一个是Automobiles的ArrayList。在方法体内,调用toString方法显示每个项目。在main结束时调用此方法。这是否意味着使类像&#34; public String toString()...... 或者是我做得很好。

&#13;
&#13;
public class Smith_lab10_prelab {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {

        ArrayList<Automobile> AutomobileList = new ArrayList<Automobile>();
        fillAutomobileList(AutomobileList);
        displayAutomobileList(AutomobileList);
    }

    public static void fillAutomobileList(ArrayList sedanList) throws FileNotFoundException {
        File myFile = new File(System.getProperty("user.dir") + "/src/gas_sedans (1).txt");
        if (!myFile.exists()) {
            System.out.println("The file could not be found");
            System.exit(0);
        }

        Scanner inputFile = new Scanner(myFile);
        for (int i = 0; inputFile.hasNext(); i++) {
            Sedan a = new Sedan();
            a.setMake(inputFile.next());
            a.setModel(inputFile.next());
            a.setMPG(inputFile.nextDouble());
            a.setTrunkCapacity(inputFile.nextDouble());
            sedanList.add(a);
        }
    }

    public static void displayAutomobileList(ArrayList automobileList) {
        System.out.println(automobileList.toString());
    }
}
&#13;
&#13;
&#13;