2017-09-04 159 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