SiteMap

2012年2月6日月曜日

印出V型

印出V型
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 件のコメント: