2014-04-17 55 views
-2

所以我的代碼完全工作;現在唯一的問題是我無法弄清楚的一個非常簡單的問題。如果用戶類型重新啓動,我不得不讓程序循環回到開始,我無法想象如何做到這一點。環回代碼的開頭

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; 

    } 
} 
+0

我有if語句讓用戶執行搜索或平均操作。我只需要知道如何執行重新啓動語句 – user3453347

+1

如果我們不需要經過這麼多的代碼,那對我們會有幫助。你能縮小到原型來更好地解釋你的要求嗎? –

回答

0

有兩種解決方案。 1.在「while」循環中包裝你的代碼。但是這將是你很難因爲你的代碼是如此凌亂:(

  1. 變化遵循

    進口java.util.Scanner中的代碼;公共類MutantGerbil { 公共靜態的String [] foodName; 公共靜態INT [] maxAmount; 公共靜態沙鼠[] gerbilAttributes; 公共靜態INT []消耗;

    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; 
    
    } } 
    
+0

你說有兩種解決方案,但看起來你只有1個。你有沒有留下一個?或者你在那裏放了兩次? (我去編輯你的答案,因爲代碼做了奇怪的格式化,但是源代碼看起來是正確的,我猜我的瀏覽器顯示它很有趣,它也顯示1和2,所以誰知道)。 –