2017-10-09 3 views
1

なんらかの理由で、「Oliver」という名前のペットを追加した後で、メインメニューに「invalid choice」という行が2回印刷されます。私はそれを見るためにもう一組の目を必要とします。私は何時間もそれを見ていて、ほとんど役に立たないミスを修正しているからです。いくつかの奇妙な理由のためにメソッドが2回呼び出されていますか?

次のようになり走っコード:ここで

 /*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*/ 

が私のメインクラスのコードです:ここで

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

は、すべてのメソッドを持つクラスです:

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"; 
} 

} 
+4

Java命名規則については、こちらをご覧ください。あなたが意図的にそれらを違反しているような感じです。あなたはあなたのコードを書いただけで、私は振り向いて何か他のことをするでしょう... – GhostCat

+0

next()、nextInt()またはnextFoo()?(https:/)を使用した後、[スキャナはnextLine /stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo –

+1

スイッチを使用していないケースを使用していますか?コンパイルエラーを最初に確認してください... –

答えて

0

それをあなたはそれが何をするの練習のために可能な限りstaticを使用しようとしているように見えますか?

とにかく、あなたが構築することができる最小の例については下記をご覧ください(つまり、新しいペットを追加する回数だけ「C」を入力できるようになります)。

static String petname, petage; 
    public static void main(String[] args) { 
     initialText(); 
     String userinput = userInput(); 
     while (userinput.equals("A") || userinput.equals("B") || userinput.equals("C") || userinput.equals("D") || userinput.equals("E")) { 
      if(userinput.equals("C")){ 
       System.out.println("Please type in a name"); 
       petname = userInput(); 
       System.out.println("Please type in an age"); 
       petage = userInput(); 
       Pet p = new Pet(petname, petage); 
       System.out.println(petname + " has been added to the store."); 
      } 
      else{ 
       System.out.println("Option not configured yet"); 
       //TODO - the rest of the options 
      } 
      initialText(); 
      userinput = userInput(); 
     } 
    } 

    public static void initialText() { 
     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"); 
    } 

    public static String userInput(){ 
     Scanner s = new Scanner(System.in); 
     return s.nextLine(); 
    } 

これは決して完璧ではなく、ちょうど一緒に非常に素早くそれに取り組む機会を与えるためにそれをノックしました。

+0

注:私は 'ペット'クラスの 'それは簡単に変更されます。 – notyou

関連する問題