首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如三阶魔方阵为: 8 1 6 3 5 7 4 9 2 要求用Applet实现上述魔方阵,窗口中包括提示栏,
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如三阶魔方阵为: 8 1 6 3 5 7 4 9 2 要求用Applet实现上述魔方阵,窗口中包括提示栏,
admin
2009-01-15
104
问题
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如三阶魔方阵为:
8 1 6
3 5 7
4 9 2
要求用Applet实现上述魔方阵,窗口中包括提示栏,提示输入0~15之间的奇数:输入框,输入方阵的阶数:按钮,点击则输出魔方阵;画布用于输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。程序运行结果如下:
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的奇数) : ");
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(FlowLayout.CENTER,25,5));
pane.add(11);
pane.add(tf1);
pane.add(btn);
pane.addActionListener(this);
add("North",pane);
dw=new drawWnd();
add("South",dw);
}
class drawWnd extends Canvas {
drawWnd() {
setSize(300,300);
setBackground(Color.GRAY);
}
public void paint(Graphics g) {
g.setColor(Color. GREEN);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
g.drawString(Integer.toString(a
[j]),i*20,j*20);
}
}
public void actionPerformed(ActionEvent ae) {
try{
n=Integer.parseInt(tf1.getText());
int i=1,j=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a
[j]=0;
j=n/2+1;
a
[j]=1;
for(int k=1;k<=n*n;k++){
i--;
j++;
if((i<1)&&(j>n)) {
i=i+2;
j--;
}
else{
if(i<1)
i=n;
if (j>n)
j=1;
}
if (a
[j]==0)
a
[j]=k;
else{
i=i+2;
j--;
a
[j]=k;
}
}
dw. repaint ( );
}
catch(NumberFormatException nfe){
tf1.setText("error!");
}
}
}
ex19_3.html
<HTML>
<HEAD>
<TITLE>ex19_3</TITLE>
</HEAD>
<BODY>
<applet code="ex19_3.class" width=800 height=400
</applet>
</BODY>
</HTML>
选项
答案
btn.addActionListener(this) a[1]][j]=1 int k=2;k<=n*n;k++
解析
本题主要考查Applet图形界面编程和for循环语句的使用以及对数组操作。解题关键是明白魔方阵的基本原理,并能看得懂这个问题的算法,熟悉数组操作,for循环语句以及Applet界面构件及其事件处理机制。魔方阵的排列规律是:首先将 1放在第一行中间一列;然后从2开始直到n*n为止,各数依次按如下规则存放:每一个数存放的行比前一个数的行数减1、列数加1;然后如果上一个数的行数为1,则下一个数的行数为n;再次当上一个数的列数为n时,下一个数的列数应改为1,行数减1;最后如果按以上规则确定的位置上的已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。本题中,第一处,事件监听器应该是btn对象的,不是pane对象;第二处,应该按照上述规则第一条,将1放在第一行中间一列;第二处,循环变量应该从2开始,如果是1得不到正确答案。
转载请注明原文地址:https://kaotiyun.com/show/hIID777K
本试题收录于:
二级Java题库NCRE全国计算机二级分类
0
二级Java
NCRE全国计算机二级
相关试题推荐
根据《食品安全法》,下列说法正确的是(:)。
张某在路上发现有小偷正在对行人李某行窃,便立刻上前阻止,结果被该小偷用刀刺伤。张某共花费医疗费用5万元。针对该情况,下列表述中正确的是()。
民族关系中的“三个离不开”是指()。
下列选项中,属于公务员应当履行的义务是()。
我国《行政处罚法》规定:行政机关在调查或进行检查时,执法人员不得少于两人,并应当向当事人或有关人员出示证件。这体现了行政处罚程序中的()。
孙某丈夫外出做买卖五年未归,也没有任何音讯,孙某欲改嫁,下面说法正确的是()。
下面关于蛋白质分子结构与功能的叙述。错误的是()。
设有栈S和队列Q,初始状态均为空。首先依次将A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为()。
在考生文件夹下有“公司.mdb”数据库。(1)以部门人员表为数据源,创建“部门人员”窗体,布局为“纵栏表”,样式为“标准”。(2)以工资表为数据源,创建“工资表”窗体,布局为“纵栏表”,样式为“标准”。(3)创建宏“查询工资”,
设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中的元素个数为()。
随机试题
下列疾病属于Ⅲ型超敏反应的是
风湿热常出现过敏性紫癜常出现
男性,30岁,十二指肠溃疡引起黑粪,呕血,神志尚清楚,但较淡漠,很口渴,四肢肤色苍白、发冷,脉搏120次/分,血压10.7/8kPa(80/60mmHg),表浅静脉塌陷,毛细血管充盈迟缓,尿少,提示失血量已达总血容量的
案例2009年7月15日7时30分左右,Q特钢公司在空分装置检修中,因冷箱内珠光砂大量喷出,发生分馏塔上塔倒塌事故,造成3人死亡,8人受伤。2009年7月12日7时30分左右。现场管理人员发现6000m3/h空分装置分馏塔冷箱中外壁有结霜现象,当即紧急
代理人没有代理权、超越代理权限范围或代理权终止后进行“代理”活动的,属于()。
某独立矿山5月份开采铜矿石2000吨,销售1500吨,该矿山适用税率为1.6元/吨,则应纳资源税( )元
某工商行政管理局执法人员在查处一商贩强买强卖违法行为时,被该商贩持刀扎伤。执法人员为查明违法行凶事实,将该商贩带回工商局关押数日。下列对执法人员做法的评述哪项是正确的?()
设函数f为[0,1]上的连续函数,且0≤f(x)<1,利用二重积分证明不等式:
ThesixteenthinternationalAIDSconferenceopenedonSundayinToronto,Canada.Morethantwenty-fourthousanddelegatesfromo
A、Forecastingmachinesstopfunctioninginhotweather.B、Theweatherpatternsaremorechangeableintheautumn.C、Professional
最新回复
(
0
)