如何遍历数组列表并使用for循环每X次执行一次操作? Java

问题描述:

我想通过由解析HTML行组成的字符串的ArrayList迭代。如何使用double for循环打印0-353,同时每4个打印一行?感谢所有帮助如何遍历数组列表并使用for循环每X次执行一次操作? Java

我必须做的是去每一行,检查它是否是世界,国家,成员或活动。我会将所有4个数据添加到一个对象中,每次完成填充对象时,我都必须开始一个新对象以添加到另一个对象的数组列表中。

<a id='slu-world-301' class='server-list__world-link'  href='http://oldschool.runescape.com/game?world=301'>Old School 1</a> 
<td class='server-list__row-cell server-list__row-cell--country server-list__row-cell--US'>United States</td> 
<td class='server-list__row-cell server-list__row-cell--type'>Free</td> 
<td class='server-list__row-cell'>Trade - Free</td> 
<a id='slu-world-302' class='server-list__world-link' href='http://oldschool.runescape.com/game?world=302'>Old School 2</a> 
<td class='server-list__row-cell server-list__row-cell--country server-list__row-cell--GB'>United Kingdom</td> 
<td class='server-list__row-cell server-list__row-cell--type'>Members</td> 
<td class='server-list__row-cell'>Trade - Members</td> 
<a id='slu-world-303' class='server-list__world-link' href='http://oldschool.runescape.com/game?world=303'>Old School 3</a> 
<td class='server-list__row-cell server-list__row-cell--country server-list__row-cell--DE'>Germany</td> 
<td class='server-list__row-cell server-list__row-cell--type'>Members</td> 
<td class='server-list__row-cell'>-</td> 

我当前的代码:

for(int i=1;i<(strs.size()/4) + 1;i++){ 
    for(int j=0;j<4;j++){ 
     System.out.println(???? WHAT DO I PUT HERE ????) 
    } 
     System.out.println("-----------------"); 
} 
+0

是什么'strs'在你的代码?什么不适合你? – nullpointer

+0

你想打印出每一行html或只是整数0-353? – Mitchel0022

+0

你的strs的大小如何?看起来它是354,因此354/4 = 88,因此你的值可以达到351。要获得所需的输出,请使用i pvkcse

我建议使用此%余运营商
参考https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html

0 % 4 = 0 
1 % 4 = 1 
2 % 4 = 2 
3 % 4 = 3 
4 % 4 = 0 



for(int i = 0; i < strs.size(); i++){ 
    System.out.println(i); 
    if (i%4 == 3) { 
     System.out.println("---------"); 
    } 
} 

输出

0 
1 
2 
3 
--------- 
4 
5 
6 
7 
--------- 
8 
9 
10 
11 
--------- 

如果代码如下

for(int i=0;i<strs.size();i++) { 
    if(i%4 ==0) { 
     System.out.println("---------"); 
    } 
    System.out.println(i); 
} 

输出将是

------------ //will more one ----- because 0 % 4 = 0 
0 
1 
2 
3 
------------ 
4 
5 
6 
7 
------------ 
8 
9 

它打印我们唯一的0-351是

i<(strs.size()/4) 

因为strs.size() = 354353(从评论),您的外环变得

原因
for(int i=0;i< 88;i++) 

,因此您可以达到最大值87*4 + 3 =>351


您可以更改为迭代:

for(int i=0;i<strs.size();i++) { 
    if(i%4 ==0) { 
     System.out.println("---------"); 
    } 
    System.out.println(i); 
} 
+0

strs.size()只能等于353,但每4个项目必须是对象的末尾,并且必须允许一个新的项目,以便每4个项目可以继续。 – Kushroom

+0

@Kushroom您的案例的结果仍然是同样,因为353/4也会导致'我 nullpointer

+1

在重新改变我的approuch后,实际上已经解决了。 – Kushroom