循环回代码的开头

时间:2014-04-17 20:02:37

标签: java

所以我的代码完全有效;现在唯一的问题是一个我无法弄清楚的非常简单的问题。如果用户键入restart,我必须让程序循环回到开头,我想不出怎么做。

import java.util.Scanner;
public class MutantGerbil {
    public static String []foodName;
    public static int [] maxAmount;
    public static Gerbil [] gerbilAttributes;
    public static int [] consumption;

    public static void main(String [] args){

        Scanner keyboard = new Scanner(System.in);


        String userInput1 = keyboard.nextLine();

        int food = Integer.parseInt(userInput1);



         foodName = new String[food]; //array of food names
         maxAmount = new int[food]; // array of max amount of food given everyday

        for (int i = 0; i < food; i++){

            System.out.println("Name of food item" + (i+1) +": "  );
            String foodType = keyboard.nextLine();

            foodName[i] = foodType;

            System.out.println("Maximum consumed per gerbil: ");
            String consumption = keyboard.nextLine();
            int consumption2 = Integer.parseInt(consumption);

            maxAmount [i] = consumption2;

        }

        System.out.println("How many gerbils are in the lab?");
        String userInput2 = keyboard.nextLine();
        int numberOfGerbils = Integer.parseInt(userInput2);
        gerbilAttributes = new Gerbil [numberOfGerbils];// Array with the gerbil attributes


        for (int i = 0; i < numberOfGerbils; i++)
        {
            consumption = new int[food]; // Array with amount of the food the gerbil eat each day
            System.out.println("Gerbil" + (i+1) + "'s" + "lab ID: ");
        String gerbilID = keyboard.nextLine();
        System.out.println("What name did the students give to "+ gerbilID);
        String gerbilName = keyboard.nextLine();
            for (int j = 0; j < food; j++)
            {
                System.out.println(gerbilID + " eats how many " + foodName[j] + " per day?");
                String gerbilComsumption = keyboard.nextLine();
                int gerbilFood = Integer.parseInt(gerbilComsumption);
                if (gerbilFood <= maxAmount[j])
                {
                    consumption[j] = gerbilFood;


                }

            }

                System.out.println("Does " + gerbilID + " bite?");
                boolean biter = keyboard.nextBoolean();
                System.out.println("Does " + gerbilID + " try to escape?");
                boolean flightRisk = keyboard.nextBoolean();
                keyboard.nextLine();
                Gerbil temp = new Gerbil (gerbilID, gerbilName, consumption, biter, flightRisk);

                gerbilAttributes [i] = temp;


        }

        boolean end1 = false;
        while (! end1){
        System.out.println("What information would you like to know");
        sortGerbilArray (gerbilAttributes);

        String userInput3 = keyboard.nextLine();


            if (userInput3.equalsIgnoreCase("average"))
            {
            String average1 = foodAverage();

                    System.out.println(average1);

            }
            if (userInput3.equalsIgnoreCase("search"))
            {
                System.out.println("Enter a Gerbil ID to search for");
                userInput3 = keyboard.nextLine();
                Gerbil findGerbil = searchForGerbil(userInput3);
                if (findGerbil == null)
                {
                    System.out.println("Error");
                }
                else {
                    String h = ("Name: " + findGerbil.getName());
                    if (findGerbil.getAttacker())
                    {
                        h+= " (will bite, ";
                    }
                        else
                        {
                            h+= " (will not bite, ";
                        }
                    if (findGerbil.getFilghtRisk())
                    {
                    h+= "will run away), "; 
                    }
                        else
                        {
                            h+= "will not run away), ";
                        }
                h+= "Food:";

                for (int i = 0; i < foodName.length; i++){
                    h+=" " + foodName[i] + "-";
                    h+= findGerbil.getConsumption2()+"/"+ maxAmount[i];
                    if (i < foodName.length-1)
                    {
                        h+=",";
                    }
                    System.out.println(h);
                }
                }
            }

            if (userInput3.equalsIgnoreCase("restart")){

            }


            if (userInput3.equalsIgnoreCase("quit"))
            {
                System.out.println("Good-bye!");
                break;
            }

        }
            }



    private static void sortGerbilArray(Gerbil[]sortGerbil){
        for (int i = 0; i < sortGerbil.length; i++){
            for (int j = 0; j < sortGerbil.length - i - 1; j++){
                if(sortGerbil[j].getID().compareToIgnoreCase(sortGerbil[j+1].getID())>0){
                    Gerbil t = sortGerbil[j];
                    sortGerbil[j] = sortGerbil[j+1];
                    sortGerbil[j+1] = t;
                }
            }
        }
    }

    private static String foodAverage() 
    {
        double average = 0.0;
        double totalMaxAmount = 0;
        double totalConsumption = 0;
        String averageFood = "";

        for (int i = 0 ; i < gerbilAttributes.length;i++)
        {

            for(int j = 0; j < maxAmount.length; j++)
            {
                totalMaxAmount += maxAmount[j];
            }


                    totalConsumption += gerbilAttributes[i].getConsumption();


                    average = totalConsumption/totalMaxAmount*100;


                    averageFood += gerbilAttributes[i].getID() + "(" + gerbilAttributes[i].getName() + ")" + Math.round(average) + "%\n";

                    totalMaxAmount = 0;

                    totalConsumption = 0;
        }



        return averageFood;
    }

    private static Gerbil searchForGerbil (String x) {
        for (Gerbil l: gerbilAttributes){
            if (l.getID().equals(x)){
                return l;
            }

        }
        return null;

    }
}

1 个答案:

答案 0 :(得分:0)

有两种解决方案。 1.将你的代码包装在&#34;同时&#34;环。但是你很难,因为你的代码太乱了:(

  1. 更改代码如下

    import java.util.Scanner;公共类MutantGerbil {     public static String [] foodName;     public static int [] maxAmount;     public static Gerbil [] gerbilAttributes;     public static int [] consumption;

    public static void main(String [] args){
    
        Scanner keyboard = new Scanner(System.in);
    
    
        String userInput1 = keyboard.nextLine();
    
        int food = Integer.parseInt(userInput1);
    
    
    
         foodName = new String[food]; //array of food names
         maxAmount = new int[food]; // array of max amount of food given everyday
    
        for (int i = 0; i < food; i++){
    
            System.out.println("Name of food item" + (i+1) +": "  );
            String foodType = keyboard.nextLine();
    
            foodName[i] = foodType;
    
            System.out.println("Maximum consumed per gerbil: ");
            String consumption = keyboard.nextLine();
            int consumption2 = Integer.parseInt(consumption);
    
            maxAmount [i] = consumption2;
    
        }
    
        System.out.println("How many gerbils are in the lab?");
        String userInput2 = keyboard.nextLine();
        int numberOfGerbils = Integer.parseInt(userInput2);
        gerbilAttributes = new Gerbil [numberOfGerbils];// Array with the gerbil attributes
    
    
        for (int i = 0; i < numberOfGerbils; i++)
        {
            consumption = new int[food]; // Array with amount of the food the gerbil eat each day
            System.out.println("Gerbil" + (i+1) + "'s" + "lab ID: ");
        String gerbilID = keyboard.nextLine();
        System.out.println("What name did the students give to "+ gerbilID);
        String gerbilName = keyboard.nextLine();
            for (int j = 0; j < food; j++)
            {
                System.out.println(gerbilID + " eats how many " + foodName[j] + " per day?");
                String gerbilComsumption = keyboard.nextLine();
                int gerbilFood = Integer.parseInt(gerbilComsumption);
                if (gerbilFood <= maxAmount[j])
                {
                    consumption[j] = gerbilFood;
    
    
                }
    
            }
    
                System.out.println("Does " + gerbilID + " bite?");
                boolean biter = keyboard.nextBoolean();
                System.out.println("Does " + gerbilID + " try to escape?");
                boolean flightRisk = keyboard.nextBoolean();
                keyboard.nextLine();
                Gerbil temp = new Gerbil (gerbilID, gerbilName, consumption, biter, flightRisk);
    
                gerbilAttributes [i] = temp;
    
    
        }
    
        boolean end1 = false;
        while (! end1){
        System.out.println("What information would you like to know");
        sortGerbilArray (gerbilAttributes);
    
        String userInput3 = keyboard.nextLine();
    
    
            if (userInput3.equalsIgnoreCase("average"))
            {
            String average1 = foodAverage();
    
                    System.out.println(average1);
    
            }
            if (userInput3.equalsIgnoreCase("search"))
            {
                System.out.println("Enter a Gerbil ID to search for");
                userInput3 = keyboard.nextLine();
                Gerbil findGerbil = searchForGerbil(userInput3);
                if (findGerbil == null)
                {
                    System.out.println("Error");
                }
                else {
                    String h = ("Name: " + findGerbil.getName());
                    if (findGerbil.getAttacker())
                    {
                        h+= " (will bite, ";
                    }
                        else
                        {
                            h+= " (will not bite, ";
                        }
                    if (findGerbil.getFilghtRisk())
                    {
                    h+= "will run away), "; 
                    }
                        else
                        {
                            h+= "will not run away), ";
                        }
                h+= "Food:";
    
                for (int i = 0; i < foodName.length; i++){
                    h+=" " + foodName[i] + "-";
                    h+= findGerbil.getConsumption2()+"/"+ maxAmount[i];
                    if (i < foodName.length-1)
                    {
                        h+=",";
                    }
                    System.out.println(h);
                }
                }
            }
    
            if (userInput3.equalsIgnoreCase("restart")){
                       main();
            }
    
    
            if (userInput3.equalsIgnoreCase("quit"))
            {
                System.out.println("Good-bye!");
                break;
            }
    
        }
            }
    
    
    
    private static void sortGerbilArray(Gerbil[]sortGerbil){
        for (int i = 0; i < sortGerbil.length; i++){
            for (int j = 0; j < sortGerbil.length - i - 1; j++){
                if(sortGerbil[j].getID().compareToIgnoreCase(sortGerbil[j+1].getID())>0){
                    Gerbil t = sortGerbil[j];
                    sortGerbil[j] = sortGerbil[j+1];
                    sortGerbil[j+1] = t;
                }
            }
        }
    }
    
    private static String foodAverage() 
    {
        double average = 0.0;
        double totalMaxAmount = 0;
        double totalConsumption = 0;
        String averageFood = "";
    
        for (int i = 0 ; i < gerbilAttributes.length;i++)
        {
    
            for(int j = 0; j < maxAmount.length; j++)
            {
                totalMaxAmount += maxAmount[j];
            }
    
    
                    totalConsumption += gerbilAttributes[i].getConsumption();
    
    
                    average = totalConsumption/totalMaxAmount*100;
    
    
                    averageFood += gerbilAttributes[i].getID() + "(" + gerbilAttributes[i].getName() + ")" + Math.round(average) + "%\n";
    
                    totalMaxAmount = 0;
    
                    totalConsumption = 0;
        }
    
    
    
        return averageFood;
    }
    
    private static Gerbil searchForGerbil (String x) {
        for (Gerbil l: gerbilAttributes){
            if (l.getID().equals(x)){
                return l;
            }
    
        }
        return null;
    
    } }