you should try something like following
while (scan.hasNext())
{
String scanStr = scan.next();
if(scanStr.toLowerCase().equals("car") )
{
carsdata[count++] = new Car(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
}
if(scanStr.toLowerCase().equals("motorcycle"))
{
motorcyclesdata[count++] = new Motorcycle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
}
if(scanStr.toLowerCase().equals("van"))
{
vansdata[count++] = new Van(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.next());
}
if(scanStr.toLowerCase().equals("pickup"))
{
pickupsdata[count++] = new Pickup(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.nextInt(), scan.next());
}
}
also following is an observation : Just check if you want to have it the same way as you are implementing
while (scan2.hasNext()) //here you are checking for Sacnner Object 2
{
if(scan2.next().toLowerCase().equals("motorcycle"))
{
//here you are using Scanner Object 1 only make sure you intended to implement it to read it from scanner Object 1 only
motorcyclesdata[count++] = new Motorcycle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
}
}