Home > OS >  Confused on making an array of a class
Confused on making an array of a class

Time:11-20

So I have this code already pre-written for me

public class Car
{
    private String make;
    private int yearModel;
    private double price;
    private int mileage;

    public Car (String mk, int year, double pr, int miles)
    {
        make = mk;
        yearModel = year;
        price = pr;
        mileage = miles;
    }

    public String getMake()
    {
        return make;
    }

    public int getYearModel()
    {
        return yearModel;
    }

    public double getPrice()
    {
        return price;
    }

    public int getMileage()
    {
        return mileage;
    }

    public String toString()
    {
        return "Make: "   make "\n" "YearModel: "   yearModel  "\n" 
        "Price: $"   price  "\n"   "Mileage: "  mileage   " miles\n\n";
    }

}

My task is to first prompt the user for the number of cars on a car lot. Then create an array of Car to hold the input number of cars. Then fill the array with the info of every car on the carlot. I know the general concept, but when I'm trying to input a String, it says a type mismatch with the array Cars only allowing for the type Car. I'm confused what that is and how to get around it. Here's my code.

import java.util.Scanner;

public class CarLot {
    public static void main (String [] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Input number of cars: ");
        Car [] Cars = new Car [input.nextInt()];
        for(int i = 0; i < Cars.length; i  ) {
            System.out.println("Make");
            Cars[i] = input.nextLine();
            System.out.println("Model");
            Cars[i] = input.nextLine();
            System.out.println("Price");
            Cars[i] = input.nextLine();
            System.out.println("Mileage");
            Cars[i] = input.nextLine();
            System.out.println();
        }
        input.close();
    }
}

CodePudding user response:

It's important to note that Scanner .nextLine() does not return a Car, it returns a String. You need to make a Car out of the inputs.

So in the loop you should do something like this (I made the cars variable name lowercase to follow Java naming conventions):

System.out.println("Make");
String make = input.nextLine();
System.out.println("Model");
String model = input.nextLine();
System.out.println("Price");
double price = input.nextDouble();
System.out.println("Mileage");
int mileage = input.nextInt();

cars[i] = new Car(make, model, price, mileage);
  •  Tags:  
  • java
  • Related