Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

for迴圈

// for迴圈

public class XXX

{

public static void main(String args[])

{

int i,j;

for(i=5;i>=1;i--)

{

for(j=1;j<=i;j++)

System.out.print('*');

System.out.println();

}

}

}

/* output--------------

*****

****

***

**

*

----------------------*/

看了好幾次 可是仍是不明白

i=5後進入內層迴圈j=1

然後印出*

為什麼是印出五個星星而不是一個星星??

還有 一定要使用巢狀迴圈才可以嗎

單一的迴圈不能製造出這樣的效果嗎??

希望哪位高人指點一下

解釋整個程式碼的敘述好嗎!?

拜託拜託

Update:

System.out.print('*');

System.out.println();

^^^^^^^^^^^^^^^^^^

為什麼還要多這一行呢???

不可以只用"System.out.print('*'); "嗎??

Update 2:

for(j=1;j<=i;j++)

^^^^^

還有i++在這裡會起什麼作用呢??!!

3 Answers

Rating
  • 2 decades ago
    Favorite Answer

    Q1:

    i=5後進入內層迴圈j=1

    然後印出*

    為什麼是印出五個星星而不是一個星星??

    還有 一定要使用巢狀迴圈才可以嗎

    A1:外層迴圈是宣告要遞減的迴圈數, 內層迴圈主要功能是印出"*"; 第二層迴圈(內層)的用意在於印出"*"以外, 還告訴了它我要印出幾個"*", 不是一定要使用巢狀迴圈才能達成印出的樣子, 但, 用這樣的方式省不少程式碼, 也增加了"可再利用性"(reuse), 如果要增加"*"數, 只需改外層"i"的起始值即可, 其他架構都不會動到。

    Q2:

    System.out.println();

    ^^^^^^^^^^^^^^^^^^

    為什麼還要多這一行呢???

    不可以只用"System.out.print('*');

    A2:

    多這行的用意在於斷行 (目地在於達成你要印出來的樣子)。

    Q3:

    for(j=1;j<=i;j++)

    ^^^^^

    還有j++在這裡會起什麼作用呢??!!

    A3:

    每一行減少一個"*"數

    建議:

    1. 你的思維出發點應該是去想, 要印出所指定的樣子的話, 該怎麼達成, 而不是一直去在意程式碼為什麼要這樣寫;

    2. 如果真的沒想法, 只能看著程式碼去做, 那就跟著迴圈RUN一次, 會較清楚。

    修正:

    System.out.print('*');

    應為:

    System.out.print("*");

  • Anonymous
    2 decades ago

    for(i=5;i>=1;i--)

    {

    // when i=5 for(j=1;j<=5;j++) so it will do 5 time : printf('*');

    for(j=1;j<=i;j++)

    System.out.print('*');

    System.out.println();

    }

    }

    }

    //if you want do one loop

    //try this

    for(i=0,j=5;i< 5*5/2;i++) //it need times

    {

    System.out.print('*');

    if(i%j==j-1)

    {

    j--;

    System.out.println();

    }

    }

    2005-09-27 15:14:45

    System.out.print('*');

    System.out.println();

    ^^^^^^^^^^^^^^^^^^

    為什麼還要多這一行呢??? ==> it do next line, just print a simble to sys tell it go next line

    不可以只用"System.out.print('*'); "嗎??

    for(j=1;j<=i;j++)

    ^^^^^

    還有i++在這裡會起什麼作用呢??!! ===> i can't see i++ , i see j++

  • 2 decades ago

    ◎ 就程式的邏輯概念而言:

    i | j

    5 | 1,2,3,4,5 | *****

    (因為j<=i的關係)

    4 | 1,2,3,4 | ****

    3 | 1,2,3 | ***

    2 | 1,2 | **

    1 | 1 | *

Still have questions? Get your answers by asking now.