“线程中的异常”;“主要”;我的标记器类中的java.util.NoSuchElementException

“线程中的异常”;“主要”;我的标记器类中的java.util.NoSuchElementException,java,Java,每当我运行程序时,它都会给我以下错误: 线程“main”java.util.NoSuchElementException中出现异常 位于java.util.StringTokenizer.nextToken(StringTokenizer.java:349) 在runCar.main(runCar.java:40) 作业上说我需要关闭文件,但我不确定如何关闭,而且我还没有在网上找到任何答案 这是我目前的代码: import java.io.IOException; import java.uti

每当我运行程序时,它都会给我以下错误:

线程“main”java.util.NoSuchElementException中出现异常 位于java.util.StringTokenizer.nextToken(StringTokenizer.java:349) 在runCar.main(runCar.java:40) 作业上说我需要关闭文件,但我不确定如何关闭,而且我还没有在网上找到任何答案

这是我目前的代码:

import java.io.IOException;
import java.util.StringTokenizer;
import java.io.*; 

public class runCar {

    public static void main(String[] args) throws IOException{

        StringTokenizer tokenizer;
        String line, code, file="car.txt";
        double dealerCost, price;
        int idNumber, day, year, modelYear;
        String makeModel, month, customer;
        Date dateArrived, dateSold;
        Car[] items = new Car[13];
        Car[] placeholder = new Car[1];

        FileReader fr = new FileReader(file);
        BufferedReader inFile = new BufferedReader(fr);
        int i = 0;
        line= inFile.readLine();
        tokenizer = new StringTokenizer(line," ");
        code = tokenizer.nextToken();

        while (code.charAt(0)!='X'){
            System.out.println();
            System.out.println(line);
            if (code.equals("C") || code.equals("c")){
                dealerCost=Double.parseDouble(tokenizer.nextToken());
                idNumber=Integer.parseInt(tokenizer.nextToken());
                month=(tokenizer.nextToken());
                day=Integer.parseInt(tokenizer.nextToken());
                year=Integer.parseInt(tokenizer.nextToken());
                modelYear=Integer.parseInt(tokenizer.nextToken());
                makeModel=(tokenizer.nextToken());
                dateArrived=new Date(day, month, year);
                items[i]=new Car(dealerCost, idNumber, modelYear, dateArrived,  makeModel);
                i++;
            }//end "if c"
            else if (code.equals("S1") || code.equals("s1"))
            {
                idNumber=Integer.parseInt(tokenizer.nextToken());
                price=Double.parseDouble(tokenizer.nextToken());
                month=(tokenizer.nextToken());
                day=Integer.parseInt(tokenizer.nextToken());
                year=Integer.parseInt(tokenizer.nextToken());
                customer=(tokenizer.nextToken());
                dateSold=new Date(day, month, year);
                for (int j=0; j < items.length; j++)
                { if (idNumber==items[0].getidNumber())
                    {   placeholder[0]=items[j];
                        items[j]=new SoldCar (placeholder[0].getdealerCost(), placeholder[0].getidNumber(),
                                              placeholder[0].getmodelYear(), placeholder[0].getdateArrived(),
                                              placeholder[0].getmakeModel(), price, customer, dateSold);
                    }            

                }

                i++;

            }//end "if s1"
            else if (code.equals("S2") || code.equals("s2"))
            {
                dealerCost=Double.parseDouble(tokenizer.nextToken());
                idNumber=Integer.parseInt(tokenizer.nextToken());
                month=(tokenizer.nextToken());
                day=Integer.parseInt(tokenizer.nextToken());
                year=Integer.parseInt(tokenizer.nextToken());
                modelYear=Integer.parseInt(tokenizer.nextToken());
                makeModel=(tokenizer.nextToken());
                dateArrived=new Date(day, month, year);
                price=Double.parseDouble(tokenizer.nextToken());
                month=(tokenizer.nextToken());
                day=Integer.parseInt(tokenizer.nextToken());
                year=Integer.parseInt(tokenizer.nextToken());
                customer=(tokenizer.nextToken());
                dateSold=new Date(day, month, year);
                items[i]=new SoldCar(dealerCost, idNumber, modelYear, dateArrived,  makeModel,
                                     price, customer, dateSold);
                i++;

            }//end "if s2"
            else
                System.out.println ("Error, wrong intital code. Use C, S1, or S2.");   
            line= inFile.readLine();
        }//end "while not x"

        for (int k=0; k < items.length; k++)
            System.out.println(items[k] + "\n");            
    }//ends main
}//end class
import java.io.IOException;
导入java.util.StringTokenizer;
导入java.io.*;
公车{
公共静态void main(字符串[]args)引发IOException{
字符串标记器;
字符串行,代码,file=“car.txt”;
双经销商成本,价格;
int idNumber,day,year,modelYear;
字符串makeModel、month、customer;
到达日期、售出日期;
汽车[]项=新车[13];
Car[]占位符=新车[1];
FileReader fr=新的FileReader(文件);
BufferedReader infle=新的BufferedReader(fr);
int i=0;
line=infle.readLine();
标记器=新的StringTokenizer(行“”);
code=tokenizer.nextToken();
while(code.charAt(0)!='X'){
System.out.println();
系统输出打印项次(行);
如果(代码等于(“C”)|代码等于(“C”)){
dealerCost=Double.parseDouble(tokenizer.nextToken());
idNumber=Integer.parseInt(tokenizer.nextToken());
月份=(tokenizer.nextToken());
day=Integer.parseInt(tokenizer.nextToken());
year=Integer.parseInt(tokenizer.nextToken());
modelYear=Integer.parseInt(tokenizer.nextToken());
makeModel=(tokenizer.nextToken());
DateArrized=新日期(日、月、年);
项目[i]=新车(经销商成本、idNumber、车型年份、到达日期、makeModel);
i++;
}//结束“如果c”
else if(code.equals(“S1”)| code.equals(“S1”))
{
idNumber=Integer.parseInt(tokenizer.nextToken());
price=Double.parseDouble(tokenizer.nextToken());
月份=(tokenizer.nextToken());
day=Integer.parseInt(tokenizer.nextToken());
year=Integer.parseInt(tokenizer.nextToken());
customer=(tokenizer.nextToken());
DateSelled=新日期(日、月、年);
对于(int j=0;j
看来你还不够认真:

下面是另一个可能有帮助的链接:

看来你还不够认真:

下面是另一个可能有帮助的链接:

inFile.close();