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!!
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
Vous devez vous connecter pour publier un commentaire.
Créer des variables locales dans votre méthode principale, disons String et int variables, et puis, après ces variables ont été remplis avec de l'entrée de l'utilisateur, de les utiliser pour appeler un constructeur.
Je vais poster un exemple général, puisque c'est les devoirs, il est préférable de vous montrer le concept et puis laissez vous utiliser le concept pour créer le code:
ailleurs
"Créer des variables locales dans votre constructeur", Cette affirmation n'a aucun sens.
ah, merci. Pet cerveau!
Ah, ok, c'est logique! Merci pour cette réponse rapide!
OriginalL'auteur Hovercraft Full Of Eels
Le compilateur se plaint que la location de voitures constructeur a besoin de quatre paramètres (une Chaîne de caractères, un entier, une Chaîne de caractères, et l'autre de type int):
"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é: aucun des arguments de raison: réelle et formelle des listes d'arguments diffèrent en longueur"
Mais dans UseRentalCar, vous n'avez pas transmis tout:
CarRental rentalCar = new CarRental();
"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"
Si vous ne fournissez pas un constructeur pour votre classe, Java va créer un arg constuctor pour vous. Si vous fournissez votre propre (qui vous l'avez fait dans la location de voitures avec 4 paramètres), java va pas créer un arg constuctor, de sorte que vous ne pouvez pas faire référence. Voir http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html pour plus d'infos à ce sujet.
Vous pouvez ajouter un no-arg constructeur vous-même depuis Java ne pas le faire pour vous. Ou depuis que vous fournissez setters pour votre location de voiture de classes, vous pouvez simplement utiliser celles-ci comme vous êtes maintenant, et retirez votre 4-arg constructeur de location de voitures (et LuxuryCarRental) et laissez Java ajouter de la valeur par défaut.
Alternativement, si vous voulez garder ces constructeurs pour une raison quelconque, vous pourriez économiser de l'entrée de l'utilisateur dans des variables locales et de reporter l'appel à la 4-arg constructeur jusqu'à ce que, après vous avez toutes les entrées de l'utilisateur.
OriginalL'auteur lreeder
"Ma question est: comment faire pour initialiser un objet en utilisant le constructeur, mais avec la saisie de l'utilisateur?"
certains pseudo-ish code qui pourrait l'aider à
OriginalL'auteur switchride