012345678
*1111111* 1*11111* 11*111* 111*1* 1111*
這個V型, 它的長(從上到下)用掉5行, 寬(從左到右)用掉9個字元
想要印出來, 不是從第一行印出個斜線到第5行, 然後再印回去.
這是不可能的 (汗.
ps.1是方便計算用
假設在for-loop裡面, 兩個頂端的點, 第一個是1 那麼另一個為9,
這說明了什麼, 程式在第一行第一個字元的位置印出星號, * ,
然後下一個* 在第九個字元的位置印出, 中間相差8 個字元,
第二行在第二個字元的位置印出* 第8 個字元印出另一個* ,相差6,
以下列出關係
第一個*
| 中間空格
| | 第二個*
1 + 8 9
2 + 6 8
3 + 4 7
4 + 2 6
5 + 0 5
跟印出直角三角形之前一樣, 如果把圖形座標化的話, 右上角為(0,0),
兩個頂點的座標為
(0,0), (0,8)
(1,1), (1,7)
(2,2), (2,6)
....
(4,4)
這樣大概可以看出規律了, 首先每行的第一個星號(*), 會在x=y的地方
印出來, 下一個星號(*)會在x+y=8的地方印出, 其他地方則用空白填滿.
---------------------------------------------------------------
public class Example { public static void main(String[] argv) { for (int y = 0; y < 5; y++) { for (int x = 0; x < 9; x++) if (x == y || ((x + y == 8))) { System.out.print("*"); } else { System.out.print(" "); } System.out.println(); } } }
----------------------------------------------------------------
第一個for-loop負責印出斷行, 第二個在x=y以及x=y=8的時候會印出星號(*),
否則則印出空格.
0 件のコメント:
コメントを投稿