Pour une raison quelconque, après avoir ajouté un animal de compagnie nommé "Oliver" le menu principal imprime deux fois avec la ligne "choix invalide" avec elle. J'ai juste besoin d'un autre ensemble d'yeux pour le regarder parce que je l'ai regardé pendant des heures et réparé de petites erreurs en vain.Méthode appelée deux fois pour une raison étrange?
Le code quand RAN ressemble à ceci:
/*Welcome to the pet store.Type the letter to make your selection
A. List the pets in the store.
B. Age up the pets
C. Add a new pet
D. Adopt a pet
E. Quit
C
Please type in a name
Oliver
Please type in an age
22
Oliver has just been added to the store!
Welcome to the pet store.Type the letter to make your selection
A. List the pets in the store.
B. Age up the pets
C. Add a new pet
D. Adopt a pet
E. Quit
Invalid choice
Welcome to the pet store.Type the letter to make your selection
A. List the pets in the store.
B. Age up the pets
C. Add a new pet
D. Adopt a pet
E. Quit*/
Voici mon code principal de classe:
private static void mainmenu(){
System.out.println("Welcome to the pet store.Type the letter to make
your selection");
System.out.println("A."+" " + "List the pets in the store.");
System.out.println("B."+" " + "Age up the pets");
System.out.println("C."+" " + "Add a new pet");
System.out.println("D."+" " + "Adopt a pet");
System.out.println("E."+" " + "Quit");
MainPets.Getuserinput();
}
public static String Getuserinput(){
userinput=scan.nextLine();
return userinput;
}
public static void main (String [] args){
int pet3age;
String pet3name;
Pet Pet1=new Pet("Fido",3);
Pet Pet2=new Pet("Furball",1);
Pet Pet3=null;
int userinputint;
MainPets.mainmenu();
while(userinput.equals("A")||userinput.equals("B")||userinput.equals("C")||userinput.equals("D")||userinput.equals("E")){
switch(userinput){
case "C":
if (Pet3!=null&&userinput.equals("C")){
System.out.println("Sorry the store is full");
}
if(Pet3==null){
System.out.println("Please type in a name");
pet3name=scan.nextLine();
System.out.println("Please type in an age");
pet3age=scan.nextInt();
Pet3=new Pet(pet3name,pet3age);
System.out.println(pet3name + " has just been added to the store!");
}
MainPets.mainmenu();
break;
}
}
while(!userinput.equals("A")||!userinput.equals("B")||!userinput.equals("C")||!userinput.equals("D")||!userinput.equals("E")){
System.out.println("Invalid choice");
MainPets.mainmenu();
}
Voici la classe avec toutes les méthodes:
public class Pet {
String Name;
String AdoptionStatus;
int Age;
public Pet() {}
public Pet(String Name, int Age) {
this.Name = Name;
this.Age = Age;
}
public void SetName(String namesetup) {
Name = namesetup;
}
public String GetName() {
return Name;
}
public int GetAge() {
return Age;
}
public int ageincrease() {
return Age++;
}
public String Getadoptionstatus() {
return AdoptionStatus;
}
public void Setadoptionstatustonotadopted(int petnumber) {
AdoptionStatus="not adopted";
}
public void Setadoptionstatustoadopted(int petnumber){
AdoptionStatus="adopted";
}
}
S'il vous plaît lire à propos de java nommage conventins. On a presque l'impression de les violer intentionnellement. Serioulsy: comment vous avez écrit votre code me fait faire demi-tour et faire autre chose ... – GhostCat
Possible copie de [Scanner saute nextLine() après avoir utilisé next(), nextInt() ou autre nextFoo()?] (Https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo) –
utilisez-vous un étui sans interrupteur? Si vous vérifiez d'abord les erreurs de compilation en premier ... –