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