2017-09-04 65 views
-2

我想學習編程,我寫了一個代碼添加到ArrayList的項目。有很多for循環,每個循環都運行一個特定的時間間隔,這給了我正確的結果。 但是,而不是很多for循環我試着只用一個循環與IF Else聲明,這doenots給我正確的結果 請任何人都可以檢查並告訴什麼是錯的?單循環給出了不同的結果比許多for循環

ArrayList dogs = new ArrayList(); 
     ArrayList cats = new ArrayList(); 
     ArrayList rabbits = new ArrayList(); 
     ArrayList guineaPigs = new ArrayList(); 
     ArrayList birds = new ArrayList(); 
     ArrayList ferrets = new ArrayList(); 

     //Before 
     for (int i = 0; i < 20; i++) 
     { 
      dogs.Add(new Animal(240.00, "D-PUP" + i)); 
     } 
     for (int i = 0; i < 15; i++) 
     { 
      dogs.Add(new Animal(190.00, "D-JUN" + i)); 
     } 
     for (int i = 0; i < 10; i++) 
     { 
      dogs.Add(new Animal(120.00, "D-ADU" + i)); 
     } 
     for (int i = 0; i < 5; i++) 
     { 
      dogs.Add(new Animal(60.50, "D-SEN" + i)); 
     } 
     //Before    
     for (int i = 0; i < 25; i++) 
     { 
      cats.Add(new Animal(220.00, "C-KIT" + i)); 
     } 
     for (int i = 0; i < 30; i++) 
     { 
      cats.Add(new Animal(180.50, "C-JUN" + i)); 
     } 
     for (int i = 0; i < 15; i++) 
     { 
      cats.Add(new Animal(120.00, "C-ADU" + i)); 
     } 
     for (int i = 0; i < 10; i++) 
     { 
      cats.Add(new Animal(50, "C-SEN" + i)); 
     } 
     //Before    
     for (int i = 0; i < 15; i++) 
     { 
      rabbits.Add(new Animal(120.75, "R-KIT" + i)); 
     } 
     for (int i = 0; i < 15; i++) 
     { 
      rabbits.Add(new Animal(40.00, "R-ADU" + i)); 
     } 
     //Before 
     for (int i = 0; i < 5; i++) 
     { 
      guineaPigs.Add(new Animal(15.00, "G-PUP" + i)); 
     } 
     for (int i = 0; i < 10; i++) 
     { 
      guineaPigs.Add(new Animal(7.50, "G-ADU" + i)); 
     } 
     //Before 
     for (int i = 0; i < 2; i++) 
     { 
      birds.Add(new Animal(90.00, "B-CHI" + i)); 
     } 
     for (int i = 0; i < 5; i++) 
     { 
      birds.Add(new Animal(65.00, "B-ADU" + i)); 
     }   
     //Before 
     for (int i = 0; i < 1; i++) 
     { 
      ferrets.Add(new Animal(150.00, "F-PUP" + i)); 
     } 
     for (int i = 0; i < 3; i++) 
     { 
      ferrets.Add(new Animal(120.00, "F-ADU" + i)); 
     } 
     for (int i = 0; i < 2; i++) 
     { 
      ferrets.Add(new Animal(30.50, "F-SEN" + i)); 
     } 
     //After 
     int j = 30; 
     int i; 
     for(i = 0; i < j; i++) 
     { 
      if(i < 1) 
      { 
       ferrets.Add(new Animal(150.00, "F-PUP" + i)); 
      } 
      if(i < 2) 
      { 
       birds.Add(new Animal(90.00, "B-CHI" + i)); 
       ferrets.Add(new Animal(30.50, "F-SEN" + i)); 
      } 
      if(i < 3) 
      { 
       ferrets.Add(new Animal(120.00, "F-ADU" + i)); 
      } 
      if(i < 5) 
      { 
       dogs.Add(new Animal(60.50, "D-SEN" + i)); 
       guineaPigs.Add(new Animal(15.00, "G-PUP" + i)); 
       birds.Add(new Animal(65.00, "B-ADU" + i)); 
      } 

      if(i < 10) 
      { 
       dogs.Add(new Animal(120.00, "D-ADU" + i)); 
       cats.Add(new Animal(50, "C-SEN" + i)); 
       guineaPigs.Add(new Animal(7.50, "G-ADU" + i)); 
      } 
      if(i < 15) 
      { 
       dogs.Add(new Animal(190.00, "D-JUN" + i)); 
       cats.Add(new Animal(120.00, "C-ADU" + i)); 
       rabbits.Add(new Animal(120.75, "R-KIT" + i)); 
       rabbits.Add(new Animal(40.00, "R-ADU" + i)); 
      } 
      if(i < 20) 
      { 
       dogs.Add(new Animal(240.00, "D-PUP" + i)); 
      } 
      if(i < 25) 
      { 
       cats.Add(new Animal(220.00, "C-KIT" + i)); 
      } 
      if(i < 30) 
      { 
       cats.Add(new Animal(180.50, "C-JUN" + i)); 
      } 
     } 
+0

沒有沒有工作! – Alen

+1

...順便說一句。在2017年與'ArrayList'一起工作...是不理想的。您可能需要閱讀[泛型](https://msdn.microsoft.com/library/ms379564.aspx),然後使用'List '來代替。 – Corak

+0

當你說第二種方法產生「不正確」的結果時,你的意思是結果有錯誤的項目數量,或者你的意思是結果有正確數量的項目,但「在錯誤的地方」? – Corak

回答

1

這不是寫的代碼的最佳方式,因爲它混淆,正如你所看到的,使事情變得複雜,難於理解。這是非常複雜的,瞭解你需要30個貓「C-JUN」

保持你的第一選擇帶獨立for循環,或更改爲dogs.AddRange(Enumerable.Range(0, 20).Select(i=>new Animal(240.00, "D-PUP" + i)))

+0

無法從System.Generic.IEnumerable 轉換爲System.Collection.ICollection – Alen

+0

確保您使用的是AddRange – ASpirin