Exception in thread "main" java.util.NoSuchElementException
Code:
public class Animal
{
protected int id;
protected String type;
protected double mass;
//------------------------------------------------------------------------
// Sets up an animal with the specified ID number, type and weight.
//------------------------------------------------------------------------
public Animal (int animalID, String animalType, double weight)
{
id = animalID;
type = animalType;
mass = weight;
}
//------------------------------------------------------------------------
// Returns information about this animal as a string.
//------------------------------------------------------------------------
public String toString()
{
String description = "ID: " + id + "\n";
description += "Type: " + type + "\n";
description += "Weight: " + mass + "\n";
return description;
}
}
Code:
public class Pet extends Animal
{
private String title;
private String own;
//------------------------------------------------------------------------
// Sets up a pet using the specified information.
//------------------------------------------------------------------------
public Pet (int animalID, String animalType, double weight, String name, String owner)
{
super (animalID, animalType, weight);
title = name;
own = owner;
}
//------------------------------------------------------------------------
// Returns information about this pet as a string.
//------------------------------------------------------------------------
public String toString()
{
String description = super.toString();
description += "Name: " + title + "\n";
description += "Owner: " + own + "\n";
return description;
}
}
Code:
public class ZooAnimal extends Animal
{
private int cage;
private String train;
//------------------------------------------------------------------------
// Sets up a zoo animal using the specified information.
//------------------------------------------------------------------------
public ZooAnimal (int animalID, String animalType, double weight, int cageNumber, String trainer)
{
super (animalID, animalType, weight);
cage = cageNumber;
train = trainer;
}
//------------------------------------------------------------------------
// Returns information about this zoo animal as a string.
//------------------------------------------------------------------------
public String toString()
{
String description = super.toString();
description += "Cage: " + cage + "\n";
description += "Trainer: " + train + "\n";
return description;
}
}
Code:
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.*;
public class FileRead
{
public static void main (String[] args) throws FileNotFoundException
{
Scanner scan = new Scanner(new File("animal.txt"));
String animalType = null, name = null, trainer = null, owner = null, lineIn = null;
int animalID = 0, cageNumber = 0;
double weight = 0.0;
StringTokenizer st = null;
Animal animal = null;
Pet pet = null;
ZooAnimal zooAnimal = null;
while (scan.hasNextLine())
{
lineIn = scan.nextLine();
st = new StringTokenizer(lineIn, ",");
animalID = Integer.parseInt(st.nextToken());
name = st.nextToken();
if (!st.hasMoreTokens())
{
animal = new Animal (animalID, animalType, weight);
System.out.println(animal);
}
else
{
name = st.nextToken();
owner = st.nextToken();
pet = new Pet(animalID, animalType, weight, name, owner);
System.out.println(pet);
}
if (!st.hasMoreTokens())
{
cageNumber = Integer.parseInt(st.nextToken());
trainer = st.nextToken();
zooAnimal = new ZooAnimal(animalID, animalType, weight, cageNumber, trainer);
System.out.println(zooAnimal);
System.out.println();
}
}
}
}
The following code segment is animal.txt
Code:
3000,Monkey,38.6
7999,Ape,65.2,
8000,Dog,13.4,Thomas,George,
5252,Giraffe,130.3,103,Samuel,
Here is my desired output:
ID: 3000
Type: Monkey
Weight: 38.6
ID: 7999
Type: Ape
Weight: 65.2
(The above from the animal class)
ID: 8000
Type: Dog
Weight: 13.4
Name: Thomas
Owner: George
(The above from the pet class)
ID: 5252
Type: Giraffe
Weight: 130.3
Cage Number: 103
Trainer: Samuel
(The above from the zoo animal class)
The error that's throwing me off so far is:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenize r.java:332)
at FileRead.main(FileRead.java:42)
What am I doing wrong that's preventing me from my program printing the output?