[問答題] 下面是一個Applet程序,其功能是構(gòu)造n階魔方陣,魔方陣是這樣一個方陣,它的每一行,每一列和對角線之和均相等,例如3階魔方陣為 8 1 6 3
[問答題] 下面是一個Applet程序,其功能是構(gòu)造n階魔方陣,魔方陣是這樣一個方陣,它的每一行,每一列和對角線之和均相等,例如3階魔方陣為
8 1 6
3 5 7
4 9 2
要求用Applet實現(xiàn)上述魔方陣。窗口中包括提示欄,提示輸入0~15之間的奇數(shù);輸入框,輸入方陣的階數(shù);按鈕;點(diǎn)擊則輸出魔方陣;畫布用于輸出結(jié)果。請改正程序中的錯誤(有下劃線的語句),使程序能輸出正確的結(jié)果。
注意:不改動程序的結(jié)構(gòu),不得增行或刪行。
源程序文件代碼清單如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.lang.Math.*;
/*
<applet code="ex10_3.class" width=800 height=400>
</applet>
*/
public class ex10_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.setLayout(new FlowLayout(FlowL
正確答案:btn.addActionListener(this)a[1][j]=1int k=2;k<=n*n;k++
參考解析:本題主要考查Applet圖形界面編程和 for循環(huán)語句的使用以及對數(shù)組的操作。解題關(guān)鍵是明白魔方陣的基本原理,并能看得懂這個問題的算法,熟悉數(shù)組操作,for循環(huán)語句以及Applet界面構(gòu)件及其事件處理機(jī)制。魔方陣的排列規(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ù)的下面。本題中,第1處,事件監(jiān)聽器應(yīng)該是btn對象的,不是pane對象;第 2處,應(yīng)該按照上述規(guī)則第一條,將1放在第一行中間一列:第2處,循環(huán)變量應(yīng)該從2開始,如果是1得不到正確答案。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。