星期四, 7月 26, 2007

這個金字塔的小程式居然花了我一個小時

近正在自學java,由於實驗用到matlab的關係,自己也有一點撰寫程式的經驗,但是在寫matlab的時候根本沒有用到物件導向的概念,但是在學java的時候,為了熟悉語法,所以就練習看看,剛好看到網路上有人出了一題小題目,所以藉此練習看看。

##CONTINUE##
  這個小題目為製作一個簡單的金字塔,就像下面這個一樣:


想法如下:
  for i = 1~10
println (10-i)*"_"+i*"*";


  但是發現好像沒有辦法直接產生10String(python可以 ><)


想法改成:
  for i=1~10
for j=(10-i)~1
print "_" //不換行
  println "*"
*=*+"_*" (後來發現中間要有一個空格才可以形成金字塔)


  話說如果是這樣的話,大概五分鐘就完成了,但是我想為了花俏一點,必須有個可以輸入要多少層的對話,比如說,製作10層的金字塔,沒想到這一部份居然花了近一個小時,翻書找怎麼寫鍵盤輸入,要try要BufferedReader要readline(matlab只要inputdialog),所以程式如下:




import java.io.*;
public class pyramid
{
public static void main(String args[])
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int i,j,s;
String a=" ";
String k="*";
System.out.println("Input a number for building a pyramid");
String g = in.readLine();
s = Integer.parseInt(g);
for (i=1; i {
for (j=s-i; j>=0; j--)
{
System.out.print(a);
}
System.out.println(k);
k=k+" *";
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}