2015-01-07 76 views
1

我有一個字符串數組這樣的:對於其他內部循環的for循環

one 
twoo 
three 
four 
five 
six 
seven 
eight 
nine 

對於每個3個元素,我要創建一個新對象設定該對象的元素的字段。例如:

obj.setOne("one"); 
obj.setTwoo("twoo"); 
obj.setThree("three"); 

我認爲我必須使用一個其他內,但我不知道如何:

one 
twoo 
three 

想使用。

我已經試過這樣的,但壞的結果:

ArrayList<MyClass> myobjects; 
MyClass my_object = new MyClass(); 

for (int z = 0; z < myarray.size(); z++) { 
    for (z = 0; z < (z + 3) && z < myarray.size(); i++) { 
     if (i == 0) { 
      mipartido.setAttributeOne(datos.get(i)); 
     } 
     else if (i == 1) { 
      mipartido.setAttributteTwoo(datos.get(i)); 
     } 
     else if (i == 2) { 
      mipartido.setAttributeThree(datos.get(i)); 
     } 
     myobjects.add(mipartido); 
    } 
} 
+1

你不能這樣做'Z^

+1

您需要在內循環中使用不同的循環變量(不同於'z')。 – khelwood

+0

直接獲取您的計數器變量。您在展位循環中使用'z',並且在內部循環中另外使用'i',而您並沒有在任何地方聲明。 –

回答

0

如果您確定myarray的尺寸總是等於x * 3,那麼您應該嘗試僅使用一個由3重複的循環。

  MyClass mipartido; 
      for (z=0; z< myarray.size(); z+=3){ 

然後在每次迭代的開始,你必須重新創建一個新的mipartido對象(但在循環之前聲明它)

   mipartido = new MyClass(); 
       mipartido.setAttributeOne(datos.get(i)); 
       mipartido.setAttributteTwoo(datos.get(i+1)); 
       mipartido.setAttributeThree(datos.get(i+2)); 
       myobjects.add(mipartido); 
     } 

通過使用此,您的ArrayList應該充滿3 mipartido對象,所有diferents。 但請記住,你的「myArray的」大小必須爲3

1

最簡單的方法是使用一個循環,但通過3迭代:FYI

for (int i = 0; i < myarray.size() - 2; i+=3) { 
    mipartido.setAttributeOne(myarray.get(i)); 
    mipartido.setAttributeTwoo(myarray.get(i+1)); 
    mipartido.setAttributeThree(myarray.get(i+2)); 
} 

:這個英文單詞數2拼寫爲「two」。

+0

@david我把它改成了'i Bohemian

0

我真的很喜歡Bohemain's answer多,但我想用建議的替代方案Modulus operator(我認爲OP打算在原來的職位)。

for (int i = 0; i < myarray.size(); i++) { 
    switch (i % 3) { 
     case 0: 
      mipartido.setAttributeOne(myarray.get(i)); 
     case 1: 
      mipartido.setAttributeTwo(myarray.get(i)); 
     case 2: 
      mipartido.setAttributeThree(myarray.get(i)); 
    } 
} 

你可以做這種方式使得你的for循環仍然通過每次一個增量,但你交替的方法調用。如解釋here,操作員只需獲取餘數。

所以你遞增,switch語句會這樣工作:

0 % 3 = 01 % 3 = 12 % 3 = 23 % 3 = 0