簡體   English   中英

不明白循環如何確定要打印多少個星號

[英]Do not understand how loop is determining how many asterisks to print

我是學習 Java 的初學者。 我偶然發現了一個我無法弄清楚的問題。 代碼中的循環如何確定要打印多少個星號。 我一直在看這部分代碼..

asterisk < myArray[counter]

有人可以用最簡單的術語解釋這是如何工作的,因為每次我想到計數器時,我都認為它只是循環中當時指向的索引。

public class Main {

    public static void main(String[] args) {

        int[] myArray = {12, 7, 9, 11, 23};

        System.out.println("Value Distribution");

        //Start of outer for loop
        for( int counter = 0; counter < myArray.length; counter++){

            //Start of inner for loop
            for( int asterisk = 0; asterisk < myArray[counter]; asterisk++)

                System.out.print("*");

            System.out.println();

        }//End of outer for loop

簡單的說

asterisk < myArray[counter]

意味着它正在檢查星號的數量是否小於來自 myArray[counter] 的值。

所以當你有counter = 0你也有 myArray[counter] = 12。

這意味着在您的內部 for 循環中,它將打印星號,直到asterisk不再小於 12。因此,從 0-11 將打印 12 個星號。

您突出顯示的行是測試循環索引asterisk是否小於myArray數組和索引counter

由於counter是第一個循環的索引變量,每次外循環執行時它都會增加。

因此,在外循環的第一次迭代中,內循環重復進行,直到asterisk大於或等於 12(myArray 在索引 0 處的值)。

在外循環的第二次迭代中,內循環不斷重復,直到asterisk大於或等於 7(myArray 在索引 1 處的值)。

等等。

這就是程序輸出以下內容的原因:

************
*******
*********
***********
***********************

用言語...

  • 對於{12, 7, 9, 11, 23}每個值X
    • 打印* X
  • 打印新行

每次我想到計數器時,我都認為它只是循環中當時指向的索引

正確的。 countermyArray的位置。 您需要使用它來訪問myArray[counter]處的值以確定要打印多少個星號。

但是,使用增強的 for 循環可以在沒有counter的情況下實現相同的結果

for (int howManyAsterisks : myArray) {
    for (int a = 0; a < howManyAsterisks; a++) System.out.print("*");
    System.out.println();
}

簡單來說,第一個循環運行到數組'myArray'的長度,在這種情況下等於 5。然后第二個循環每次運行到'myArray'各個項目的長度(即第一個循環的 12 次)次,第二次為 7,以此類推)。

希望這對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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