我正在开发一个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
我将如何做到这一点?
任何帮助将不胜感激。
答案 0 :(得分:9)
看起来你想要并行迭代。
简单地做这样的事情:
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
请注意,如果可能的话,您应该使用参数化类型而不是原始类型( Effective Java 2nd Edition,第23项:不要在新代码中使用原始类型)。
答案 1 :(得分:2)
在我看来,你根本不需要嵌套的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)
}
}
答案 2 :(得分:0)
“嵌套for循环”并不意味着“隔行循环”。例如,说:
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++;
}