[英]Nested for loop inside a while loop - Java
我正在開發Java Web應用程序,並且對HTML表中的循環有以下要求。
我在while循環內有一個嵌套的for循環(兩者都執行相同的#次,例如3)。
我的代碼如下所示:
<table>
<thead>...</thead>
<tbody>
if (patcases != null && patcases.size() > 0) {
Iterator itr1 = patcases.iterator();
while (itr1.hasNext()) {
..some code here..
System.out.println("DA Email from webpage..."+da.getEmail());
int rCount = 0;
<tr>
for(int i=0;i<passedValues.length; i++){
...some code here..
</tr>
System.out.println("Printed row..." +rCount);
rCount ++;
} /*closing of for loop */
}/*closing of while loop */
}/* closing of if loop */
</tbody>
</table>
現在,使用這種類型的循環結構,可以在控制台上獲得以下內容:
來自網頁的DA電子郵件... abc@abc.com
打印行... 0
打印行... 1
打印行... 2
來自網頁的DA電子郵件... xyz@xyz.com
打印行... 0
打印行... 1
打印行... 2
來自網頁的DA電子郵件... 123@123.com
打印行... 0
打印行... 1
打印行... 2
但是我想要的輸出類型如下:
來自網頁的DA電子郵件... abc@abc.com
打印行... 0
來自網頁的DA電子郵件... xyz@xyz.com
打印行... 1
來自網頁的DA電子郵件... 123@123.com
打印行... 2
我將如何去做呢?
任何幫助將不勝感激。
看來您要並行迭代 。
只需執行以下操作:
Iterator<?> iter1 = ...;
Iterator<?> iter2 = ...; // or: int index = 0;
while (iter1.hasNext() &&
iter2.hasNext()) { // or: index < MAX
Object item1 = iter1.next();
Object item2 = iter2.next(); // or: index++;
doSomething(item1, item2); // or: doSomething(item1, index);
}
// perhaps additional handling if one ran out before the other
請注意,如果可能的話,您應該使用參數化類型而不是原始類型( 有效的Java 2nd Edition,項目23:不要在新代碼中使用原始類型 )。
在我看來,您根本不需要嵌套的for循環。 您只需要一個在while
循環中遞增的計數器:
if (patcases != null && patcases.size() > 0) {
Iterator itr1 = patcases.iterator();
int index = 0;
while (itr1.hasNext()) {
..some code here..
System.out.println("DA Email from webpage..."+da.getEmail());
if (index < passedValues.length) {
System.out.println("Printed row..." + index);
} else {
// Hmm, didn't expect this...
// (Throw exception or whatever)
}
index++;
}
if (index != passedValues.length) {
// Hmm, didn't expect this...
// (Throw exception or whatever)
}
}
“嵌套循環”並不表示“隔行掃描”。 例如,說:
for (i = 0; i < 3; i++) {
print("i: " + i);
for (j = 0; j < 3; j++)
print("\tj: " + j);
}
打印以下內容:
i: 0
j: 0
j: 1
j: 2
i: 1
j: 0
j: 1
j: 2
i: 2
j: 0
j: 1
j: 2
您似乎想要的是:
i: 0
j: 0
i: 1
j: 1
i: 2
j: 2
取而代之的嵌套for
循環,你只需使用同一回路單獨計數器:
j = 0;
for (i = 0; i < 3; i++) {
print("i: " + i);
print("\tj: " + j);
j++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.