[問答題] 下面是一個Applet程序,其功能是構(gòu)造n階魔方陣,魔方陣是這樣一個方陣,它的每一行,每一列和對角線之和均相等,例如三階魔方陣為: 8 1 6
[問答題] 下面是一個Applet程序,其功能是構(gòu)造n階魔方陣,魔方陣是這樣一個方陣,它的每一行,每一列和對角線之和均相等,例如三階魔方陣為:
8 1 6
3 5 7
4 9 2
要求用Applet實現(xiàn)上述魔方陣,窗口中包括提示欄,提示輸入0~15之間的奇數(shù):輸入框,輸入方陣的階數(shù):按鈕,點擊則輸出魔方陣;畫布用于輸出結(jié)果。請改正程序中的錯誤(有下劃線的語句),使程序能輸出正確的結(jié)果。
注意:不改動程序的結(jié)構(gòu),不得增行或刪行。程序運行結(jié)果如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.lang.Math.*;
/*
<applet code="ex19_3.class" width=800 height=400 >
</applet>
*/
public class ex19_3 extends Applet implements ActionListener
Panel pane=new Panel();
drawWnd dw;
Label 11 = new Label("輸入 (0~15的奇數(shù)) : ");
TextField tf1 = new TextField(5);
Button btn = new Button("OK");
int[] [] a=new int[16] [16];
int n=15;
public void init()
pane.
正確答案:btn.a(chǎn)ddActionListener(this) a[1]][j]=1 int k=2;k<=n*n;k++
參考解析:本題主要考查Applet圖形界面編程和for循環(huán)語句的使用以及對數(shù)組操作。解題關(guān)鍵是明白魔方陣的基本原理,并能看得懂這個問題的算法,熟悉數(shù)組操作,for循環(huán)語句以及Applet界面構(gòu)件及其事件處理機制。魔方陣的排列規(guī)律是:首先將 1放在第一行中間一列;然后從2開始直到n*n為止,各數(shù)依次按如下規(guī)則存放:每一個數(shù)存放的行比前一個數(shù)的行數(shù)減1、列數(shù)加1;然后如果上一個數(shù)的行數(shù)為1,則下一個數(shù)的行數(shù)為n;再次當(dāng)上一個數(shù)的列數(shù)為n時,下一個數(shù)的列數(shù)應(yīng)改為1,行數(shù)減1;最后如果按以上規(guī)則確定的位置上的已有數(shù),或上一個數(shù)是第1行第n列時,則把下一個數(shù)放在上一個數(shù)的下面。本題中,第一處,事件監(jiān)聽器應(yīng)該是btn對象的,不是pane對象;第二處,應(yīng)該按照上述規(guī)則第一條,將1放在第一行中間一列;第二處,循環(huán)變量應(yīng)該從2開始,如果是1得不到正確答案。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。