繁体   English   中英

方法由于某种奇怪的原因被两次调用?

[英]Method being called twice for some strange reason?

由于某种原因,在我添加了一个名为“ Oliver”的宠物之后,主菜单会打印两次,并带有“ 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
      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";
}

}

看起来您正在尝试尽可能多地使用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();
    }

它绝不是完美的,只是很快地将其组合在一起就可以为您提供一个工作的机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM