T1 算術式之求解 說明 : 請在視窗上配置一文字方塊及一按鈕, 在文字方塊上輸入一數學運算式, 按上述按鈕後, 輸出該數學運算式的最後結果值 該運算式的運算元皆介於 0~10000, 而運算子僅含 +, 且該運算式的字元總個數 ( 即運算元的個數加上運算子的個數 ) 最多為 30, 程式中必須有須有判斷範圍的程式, 若是超出題目所訂定的字串長度則要求重新輸入 文字方塊文字 :80+123456 輸出 : 範圍錯誤, 請重新輸入 文字方塊文字 :1+20+800+1000 輸出 :1821 文字方塊文字 :1000+200+1+1000+200+1+1000+200+1 輸出 : 範圍錯誤, 請重新輸入 ( 字元總個數 :32 個 ) JButto b1=ew JButto(" 執行 "); // 按鈕 JTextField t1=ew JTextField(40); // 文字欄位 JLabel la=ew JLabel(" 請輸入數學運算式 :"); // 提示輸入的標籤 JLabel lb=ew JLabel(" 答案 "); // 顯示答案的標籤 public T1() throws HeadlessExceptio { // TODO Auto-geerated costructor stub this.settitle(" 數學算式之求解 "); // 設定視窗標題 this.setsize(650, 100); // 設定視窗大小 this.setlayout(ew FlowLayout()); // 設定版面 add(la); add(t1); add(b1); add(lb); // 加入元件 this.setvisible(true); // 設定視窗為可見的 b1.addactiolisteer(this); // 註冊按鈕事件 public void actioperformed(actioevet arg0) { Strig s = t1.gettext(); // 取得文字欄位內容 if (s.legth() > 30){ lb.settext(" 範圍錯誤, 請重新輸入 ( 字元總個數 : "+s.legth()+" 個 ) "); retur; // 立即返回 StrigTokeizer st = ew StrigTokeizer(s, "+"); // 以 + 號斷開 it sum = 0; // 總和 while(st.hasmoretokes()){ // 當尚有斷開的一段 it val = Iteger.parseIt(st.extToke()); // 將此斷開的下一段轉成整數 if (val > 10000){ lb.settext(" 範圍錯誤, 請重新輸入 "); retur; // 立即返回 sum = sum + val; lb.settext(" 答案是 :" + sum); // 顯示答案 import java.awt.*; import javax.swig.*; import java.awt.evet.*; import javax.swig.evet.*; public class T1 exteds JFrame implemets ActioListeer { public static void mai(strig[] args) { ew T1();
T2 楊輝三角塔 說明 : 請在視窗上配置二文字方塊及一按鈕, 在二文字方塊上分別輸入一楊暉三角塔之階數 a 及 b, 按上述按鈕後, 輸出該第 a 階到第 b 階之楊暉三角塔 ( 或稱巴斯卡三角型 ) 請注意 : 三角塔之排列須對偁, 不可為倒三角或倒梯形, 否則不予計分 輸入的數值範圍為 0 ~10 程式中必須有須有判斷範圍的程式, 若是超出題目所訂定的數值範圍則要求重新輸 入 註 : 第 階之楊暉三角塔 : C 0 C 1 C 2 輸入 : 第一個文字方塊文字 :11 第一個文字方塊文字 :1 輸出 : 範圍錯誤, 請重新輸入 C 3 C 1 C 輸入 : 第一個文字方塊文字 :2 第一個文字方塊文字 :10 輸入 : 第一個文字方塊文字 :6 第一個文字方塊文字 :4 輸出 :
import java.awt.*; import javax.swig.*; import java.awt.evet.*; import javax.swig.evet.*; public class T2 exteds JFrame implemets ActioListeer { JButto b1=ew JButto(" 計算 "); // 按鈕 JTextField t1=ew JTextField(18); // 文字欄位 JTextField t2=ew JTextField(18); // 文字欄位 JLabel l1=ew JLabel(" 階段 a"); // 標籤 JLabel l2=ew JLabel(" 階段 b"); // 標籤 JLabel l3=ew JLabel(" 結果 "); // 標籤 JTextArea a1=ew JTextArea(11, 80); // 文字區 JScrollPae s1 = ew JScrollPae(a1); // 捲軸, 包含了文字區 public T2() throws HeadlessExceptio { // TODO Auto-geerated costructor stub this.settitle(" 楊暉三角塔 "); this.setsize(900, 300); this.setlayout(ew FlowLayout()); this.setdefaultcloseoperatio(exit_on_close); add(l1); add(t1); add(l2); add(t2); add(b1); add(s1); this.setvisible(true); b1.addactiolisteer(this); // 註冊按鈕事件 (i-j+1)/j a1.apped(item+ "\t"); // 顯示在文字區 for (it j = 1; j <=i; j++){ // 後續項 item = item * (i -j +1)/j; // 後項是前項乘以 a1.apped(item+ "\t"); // 顯示在文字區 a1.apped("\"); // 換行 public static void mai(strig[] args) { ew T2(); public void actioperformed(actioevet arg0) { it a = Iteger.parseIt(t1.getText()); // 將第一個文字欄位內容轉成整數, 記在變數 a 中 it b = Iteger.parseIt(t2.getText()); // 將第二個文字欄位內容轉成整數, 記在變數 b 中 if (a < 0 a > 10 b < 0 b > 10){ a1.settext(" 範圍錯誤, 請重新輸入 "); retur; if (a > b){ // 若先大後小, 則交換 it t = a; a = b; b = t; a1.settext(""); // 清空文字區 for (it i = a; i <= b; i++){ // 從第 a 階到第 b 階 it item = 1; // 第一項固定為 1
T3 3X3 的方陣相乘 說明 : 由學生輸入 2 個 3*3 方陣 ( 共 18 個矩陣因子 ) 進行矩陣相乘 程式最後詢問使用者是否 還要繼續, 輸入 0 則結束此程式 以上之輸入驗證資料, 全部由檔案讀取 ; 檔名為 umber.txt( 格 式請參閱此檔 ), 結果顯示於畫面上, a11 a12 a13 b11 b12 b13 c11 c12 c13 a21 a22 a23 b21 b22 b23 = c21 c22 c23 a31 a32 a33 b31 b32 b33 c31 c32 c33 矩陣內各元素相乘法則如下 : c11=a11b11+a12b21+a13b31 c12=a11b12+a12b22+a13b32 c21=a21b11+a22b21+a23b31 c33=a31b13+a32b23+a33b33 第一個方陣 : 1 2 3 4 5 6 7 8 9 第二個方陣 : 1 2 3 4 5 6 7 8 9 import java.awt.*; import javax.swig.*; import java.awt.evet.*; import javax.swig.evet.*; public class T3 exteds JFrame implemets ActioListeer { JButto b1=ew JButto(" 計算 "); // 按鈕 JTextField t1=ew JTextField("umber.txt", 18); // 文字方塊 JLabel l1=ew JLabel(" 請輸入檔名 :"); // 標籤 JLabel l2=ew JLabel(" 答案 "); // 標籤 JTextArea a1=ew JTextArea(20, 40); // 文字區 JScrollPae s1 = ew JScrollPae(a1); // 捲軸 public T3() throws HeadlessExceptio { // TODO Auto-geerated costructor stub this.settitle("3*3 的方陣相乘 "); this.setsize(600, 500); this.setlayout(ew FlowLayout()); add(l1);add(t1);add(b1);add(l2);add(s1); this.setvisible(true); b1.addactiolisteer(this); public void actioperformed(actioevet arg0) { // 宣告與配置陣列 it[] a = ew it[10]; it[] b = ew it[10]; it[] c = ew it[10]; try { FileReader fr=ew FileReader(t1.getText());// 檔案讀取 BufferedReader buf=ew BufferedReader(fr); for(;;){ // 讀取陣列元素 for (it i = 1; i < 10; i++) a[i]=iteger.parseit(buf.readlie()); for (it i = 1; i < 10; i++) b[i]=iteger.parseit(buf.readlie()); c[1]=a[1]*b[1]+a[2]*b[4]+a[3]*b[7]; c[2]=a[1]*b[2]+a[2]*b[5]+a[3]*b[8]; c[3]=a[1]*b[3]+a[2]*b[6]+a[3]*b[9]; c[4]=a[4]*b[1]+a[5]*b[4]+a[6]*b[7]; c[5]=a[4]*b[2]+a[5]*b[5]+a[6]*b[8]; c[6]=a[4]*b[3]+a[5]*b[6]+a[6]*b[9]; c[7]=a[7]*b[1]+a[8]*b[4]+a[9]*b[7]; c[8]=a[7]*b[2]+a[8]*b[5]+a[9]*b[8]; c[9]=a[7]*b[3]+a[8]*b[6]+a[9]*b[9]; // 計算乘積 // 印出結果 a1.apped(" 第一個方陣 " + "\"); a1.apped(a[1] + "\t" + a[2] + "\t" + a[3] + "\"); a1.apped(a[4] + "\t" + a[5] + "\t" + a[6] + "\")
a1.apped(a[7] + "\t" + a[8] + "\t" + a[9] + "\"); a1.apped("\"+" 第二個方陣 " + "\"); a1.apped(b[1] + "\t" + b[2] + "\t" + b[3] + "\"); a1.apped(b[4] + "\t" + b[5] + "\t" + b[6] + "\"); a1.apped(b[7] + "\t" + b[8] + "\t" + b[9] + "\"); a1.apped("\"+" 方陣乘積 " + "\"); a1.apped(c[1] + "\t" + c[2] + "\t" + c[3] + "\"); a1.apped(c[4] + "\t" + c[5] + "\t" + c[6] + "\"); a1.apped(c[7] + "\t" + c[8] + "\t" + c[9] + "\"); T4 魔術方陣 說明 : 請在視窗上配置一文字方塊及一按鈕, 在文字方塊上輸入階數 (<=15, 且為奇數 ), 按上述按鈕後, 輸出 之魔術方塊, 該方塊之各列和各行和與對角線之和均相等 程式中必須有須有判斷範圍的程式, 若是超出題目所訂定的數值範圍則要求重新輸入 文字方塊文字 :17 輸出 : 範圍錯誤, 請重新輸入 retur; if (buf.readlie().equals("0")) // 是否繼續 catch(ioexceptio e){ System.out.pritl("IO 錯誤 "); retur; public static void mai(strig[] args) { ew T3(); 文字方塊文字 ::5 輸出結果
文字方塊文字 ::7 輸出結果 import java.awt.*; import javax.swig.*; import java.awt.evet.*; import javax.swig.evet.*; public class T4 exteds JFrame implemets ActioListeer { JButto b1=ew JButto(" 計算 "); // 按鈕 JTextField t1=ew JTextField(18); // 文字方塊 JLabel l1=ew JLabel(" 輸入階數 :"); // 標籤 JLabel l2=ew JLabel(" 結果 "); // 標籤 JTextArea a1=ew JTextArea(16, 90); // 文字區 JScrollPae s1 = ew JScrollPae(a1); // 讓元件有捲軸 public T4() throws HeadlessExceptio { // TODO Auto-geerated costructor stub this.settitle(" 魔方陣 "); // 設定標題 this.setsize(1024, 400); // 設定大小 this.setlayout(ew FlowLayout()); // 設定版面 add(l1);add(t1);add(b1);add(l2);add(s1); // 加入元件 this.setvisible(true); // 顯示 b1.addactiolisteer(this); // 註冊按鈕事件 public void actioperformed(actioevet arg0) { it ; try { = Iteger.parseIt(t1.getText()); catch(numberformatexceptio e) { a1.settext(" 範圍錯誤 "); retur; if ( < 0 > 15 % 2 == 0){ a1.settext(" 範圍錯誤 "); retur; a1.settext(""); // 清空文字區 it[][] a = ew it[][]; it i = 0; // 最上列 it j = /2; // 中間格 for (it umber = 1; umber <= *; umber++){ a[i][j] = umber; if (a[(i-1+)%][(j+1)%] == 0) { // 若右上格是空白 i = (i-1+)%; // 上 j = (j+1)%; // 右 else i++; // 正下格 for (i = 0; i < ; i++){ for (j = 0; j < ; j++){ a1.apped(a[i][j]+"\t"); a1.apped("\"); // 換列 public static void mai(strig[] args) { ew T4();