/***************************************** 題目:楊暉三角塔(或稱巴斯卡三角型) 說明:請在視窗上配置二文字方塊及一按鈕,在二文字方塊上 分別輸入一楊暉三角塔之階數a及b,按上述按鈕後,輸出該 第a階到第b階之楊暉三角塔(或稱巴斯卡三角型)。請注意: 三角塔之排列須對偁,不可為倒三角或倒梯形,否則不予計分。 輸入的數值範圍為0?10。程式中必須有須有判斷範圍的程式, 若是超出題目所訂定的數值範圍則要求重新輸入。 *************************************************/ import java.awt.*; import javax.swing.*; import java.awt.event.*; //想想還有沒有其他的東西要import public class f2 extends JFrame implements ActionListener//名稱改一改 { Container c; //設定UI元件 JLabel ta,tb,tans; JTextField ia,ib; JTextArea ans; JButton bot; //設定共用的變數與類別 public f2() //建構元,名稱改一改 { super("楊暉三角塔"); c=getContentPane();//取得ContentPane //設定版面設定 c.setLayout(new FlowLayout(FlowLayout.CENTER));//設定為用flowlayout //初始化UI元件 ta=new JLabel("階段a"); tb=new JLabel("階段b"); tans=new JLabel("結果"); ia=new JTextField("0",5); ib=new JTextField("2",5); bot=new JButton("計算"); ans=new JTextArea(11,40); ans.setEditable(false); //將UI元件加入版面中 c.add(ta); c.add(ia); c.add(tb); c.add(ib); c.add(bot); c.add(tans); c.add(ans); //設定UI元件與滑鼠的事件觸發傾聽者 bot.addActionListener(this); setSize(640,480);//設定size,顯示出去 setVisible(true); } public void paint(Graphics g) { super.paint(g);//畫出元件 } //UI元件事件處理類別寫在這裡 //滑鼠事件處理類別寫在這裡 public void actionPerformed(ActionEvent e) { int a,b,tmp,cans; int i,j; a=Integer.parseInt(ia.getText()); b=Integer.parseInt(ib.getText()); //檢查範圍 if (a<0 || b< 0||a>10||b>10) { ans.setText("範圍錯誤請重新輸入。"); repaint(); return; } /********** 處理好a b的大小關係 ********/ if (a>b) { tmp=a; a=b; b=tmp; } ans.setText(""); for (i=a;i<=b;i=i+1) { cans=1; ans.append("1\t"); for (j=1;j<=i;j=j+1) { cans=cans*(i-j+1)/j; ans.append(cans+"\t"); } ans.append("\n"); }//for repaint(); } /***主程式***/ public static void main(String args[]) //程式起點 { f2 app=new f2(); //名稱改一改,啟動UI元件 app.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); //處理視窗關閉要求 } }