Comment faire pour remplir un constructeur avec la saisie de l'utilisateur en Java?

J'ai frappé un mur sur une mission qui ont été peignage du site pour quelque chose d'utile (est venu vide). Je suis nécessaires pour créer une classe, un constructeur dans la classe, puis une sous-classe de prolonger la super-classe. Ensuite, je suis tenu de créer un nouveau fichier avec une méthode main pour démontrer les deux cas. Pas de problème, sur le plan conceptuel.

Ma question est: comment faire pour initialiser un objet en utilisant le constructeur, mais avec la saisie de l'utilisateur?

Maintenant l'erreur que je reçois est: "constructeur de location de voitures dans la catégorie de location de voitures ne peut pas être appliqué pour les types de donnée;
requis: String,int,String,int
trouvé: pas d'arguments
raison: réelle et formelle des listes d'arguments diffèrent en longueur"

Veuillez pas de remarques sarcastiques sur "l'erreur vous indique quel est le problème." Non, il ne le dit pas moi ce que c'est. Je suis un tout petit bébé dans ce genre de choses et ont besoin d'un peu de se tenir par la main.

Je vais coller mes 3 classes ci-dessous. Ils vont probablement vous faire tordre de douleur, depuis que je suis un newb (aussi, ma classe est une version abrégée de 8 semaines de cours où pratiquement pas de temps a été consacré à de pseudo, j'ai donc le défi de concevoir la logique elle-même).

Je ne suis pas à la recherche de quelqu'un pour faire mes devoirs pour moi, je suis juste à la recherche d'un coup de main dans la UseCarRental.java fichier. Voici mon 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());
}
}

la sous-classe LuxuryCarRental....

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());
}
}

et maintenant, la classe avec la méthode principale:

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();
}
}

(omis de cause, il n'a pas d'importance, principalement en essayant d'obtenir l'objet de l'instanciation de travail)

merci pour toute aide!!

Votre setDailyRate méthode ne fait rien & le paramètre que vous transmettez ne fait pas de sens. Le commutateur dépend d'une autre propriété. Elle ne modifie pas le dailyRate domaine de votre classe.

OriginalL'auteur auslander | 2013-12-07