1

Whenever I run my program it gives me the following error:

Exception in thread "main" java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(StringTokenizer.java:349) at runCar.main(runCar.java:40) the assignment says that I need to close the file, but I am unsure on how to do so, and I haven't found any answers online.

Here is my current code:

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
BaCaRoZzo
  • 7,502
  • 6
  • 51
  • 82
Ryan
  • 11
  • 1

1 Answers1

0
inFile.close();

Seems you haven't looked hard enough: Do I need to close() both FileReader and BufferedReader?

Here's another link that might help: BufferedReader Documentation

Community
  • 1
  • 1
tankucukoglu
  • 455
  • 6
  • 20