簡體   English   中英

在while循環內嵌套for循環-Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM