title: How to populate a constructor with user input in Java?
body: <p>I've hit a wall on an assignment and have been combing the site for anything helpful (came up empty).  I'm required to create a class, a constructor within that class, and then a subclass to extend the superclass.  Then, I'm required to create a new file with a main method to demonstrate both cases.  No problem, conceptually.</p>
  
  <p>My question is this: how do I initialize an object using the constructor, but with user input?</p>
  
  <p>Right now the error I'm getting is: "constructor CarRental in class CarRental cannot be applied to given types;
    required: String,int,String,int
    found: no arguments
    reason: actual and formal argument lists differ in length"</p>
  
  <p>Please no snide remarks on "the error tells you what the problem is." No, it doesn't tell <em>me</em> what it is. I'm a wee babe in this stuff and need a little hand-holding.</p>
  
  <p>I'll paste my 3 classes below. They will probably make you writhe in agony, since I'm such a newb (also, my class is an abbreviated 8-week course where virtually no time was dedicated to pseudocode, so I have the extra challenge of conceiving the logic itself).</p>
  
  <p>I am not looking for anyone to do my homework for me, I am just looking for a helping hand in the UseCarRental.java file.  Here's my code..</p>
  
  <pre><code>public class CarRental {
  protected String renterName;
  protected int zipCode;
  protected String carSize;
  protected double dailyRate;
  protected int rentalDays;
  protected double totalCost;
  final double ECONOMY = 29.99;
  final double MIDSIZE = 38.99;
  final double FULLSIZE = 43.50;
  
  public CarRental(String renterName, int zipCode, String carSize, int rentalDays){
  
  totalCost = dailyRate * rentalDays;
  }
  public String getRenterName(){
  return renterName;
  }
  public void setRenterName(String renter){
  renterName = renter;
  }
  public int getZipCode(){
  return zipCode;
  }
  public void setZipCode(int zip){
  zipCode = zip;
  }
  public String getCarSize(){
  return carSize;
  }
  public void setCarSize(String size){
  carSize = size;
  }
  public double getDailyRate(){
  return dailyRate;
  }
  public void setDailyRate(double rate){
  switch (getCarSize()) {
          case "e":
              rate = ECONOMY;
              break;
          case "m":
              rate = MIDSIZE;
              break;
          case "f":
              rate = FULLSIZE;
              break;
      }
  }
  public int getRentalDays(){
  return rentalDays;
  }
  public void setRentalDays(int days){
  rentalDays = days;
  }
  public double getTotalCost(){
  return totalCost;
  }
  public void setTotalCost(double cost){
  totalCost = cost;
  }
  
  public void displayRental(){
  System.out.println("==============================================");
  System.out.println("Renter Name: " + getRenterName());
  System.out.println("Renter Zip Code: " + getZipCode());
  System.out.println("Car size: " + getCarSize());
  System.out.println("Daily rental cost: $" + getDailyRate());
  System.out.println("Number of days: " + getRentalDays());
  System.out.println("Total cost: $" + getTotalCost());
  
  }
  
  }
  </code></pre>
  
  <p>the subclass LuxuryCarRental....</p>
  
  <pre><code>public class LuxuryCarRental extends CarRental {
  
  final double chauffeur = 200.00;
  final double dailyRate = 79.99;
  protected String chauffeurStatus;
  
  public LuxuryCarRental(String renterName, int zipCode, String carSize, int rentalDays) {
      super(renterName, zipCode, carSize, rentalDays);
  }
  
  public String getChauffeurStatus(){
  return chauffeurStatus;
  }
  public void setChauffeurStatus(String driver){
  chauffeurStatus = driver;
  }
  public double getChauffeurFee(){
  return chauffeur;
  }
  public void setTotalLuxuryCost(){
  if (chauffeurStatus=="y")
      setTotalCost((dailyRate * getRentalDays()) + (chauffeur * getRentalDays()));
  else
      setTotalCost(dailyRate * getRentalDays());
  }
  
  @Override
  public void displayRental(){
  System.out.println("==============================================");
  System.out.println("Renter Name: " + getRenterName());
  System.out.println("Renter Zip Code: " + getZipCode());
  System.out.println("Car size: " + getCarSize());
  System.out.println("Optional Chauffeur fee: $" + getChauffeurFee());
  System.out.println("Daily rental cost: $" + getDailyRate());
  System.out.println("Number of days: " + getRentalDays());
  System.out.println("Total cost: $" + getTotalCost());
  
  }
  }
  </code></pre>
  
  <p>and now the class with the main method:</p>
  
  <pre><code>import java.util.Scanner;
  public class UseRentalCar {
  
  public static void main(String[] args){
      Scanner keyboard = new Scanner(System.in);
      CarRental rentalCar = new CarRental();
  
      System.out.println("==========================");
      System.out.println("RENTAL CAR SELECTION");
      System.out.println("==========================");
      System.out.println("Enter your name: ");
      rentalCar.setRenterName(keyboard.next());
      System.out.println("Enter your zip code: ");
      rentalCar.setZipCode(keyboard.nextInt());
      System.out.println("Enter the car size ("e=Economy, m=Midsize, f=Fullsize: ");
      rentalCar.setCarSize(keyboard.next());
      System.out.println("Enter the number of days: ");
      rentalCar.setRentalDays(keyboard.nextInt());
  
      rentalCar.displayRental();
  
  
  
  }
  }
  </code></pre>
  
  <p>(omitted some cause it doesn't matter, mainly trying to get the object instantiation working)</p>
  
  <p>thanks for any help!!</p>