首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如3阶魔方阵为 8 1 6 3 5 7 4 9 2 要求用Applet实现上述魔方阵。窗口中包括提示栏,提
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如3阶魔方阵为 8 1 6 3 5 7 4 9 2 要求用Applet实现上述魔方阵。窗口中包括提示栏,提
admin
2009-01-15
46
问题
下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如3阶魔方阵为
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="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的奇数): ");
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!");
}
}
}
ex10_3.html
<HTML>
<HEAD>
<TITLE>ex10_3</TITLE>
</HEAD>
<BODY>
<applet code="ex10_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列时,则把下一个数放在上一个数的下面。本题中,第1处,事件监听器应该是btn对象的,不是pane对象;第 2处,应该按照上述规则第一条,将1放在第一行中间一列:第2处,循环变量应该从2开始,如果是1得不到正确答案。
转载请注明原文地址:https://kaotiyun.com/show/B1np777K
本试题收录于:
二级Java题库NCRE全国计算机二级分类
0
二级Java
NCRE全国计算机二级
相关试题推荐
打开数据库abc的正确命令是
在下面的VisualFoxPro表达式中,运算结果为逻辑真的是
在关系数据库中,用来表示实体间联系的是
下列与队列结构有关联的是
下列选项中不属于面向对象程序设计特征的是
假设某个表单中有一个复选框(CheckBox1)和一个命令按钮Command1,如果要在Command1的Click事件代码中取得复选框的值,以判断该复选框是否被用户选择,正确的表达式是
1.打开考生文件夹下的数据库文件“大学管理”,修改并执行程序four.prg。程序four.prg的功能是:(1)建立一个“工资表”(各字段的类型和宽度与“教师表”的对应字段相同),其中职工号为关键字。(2)插入一条“职工号”、“姓名”
使用如下3个数据库表:职员.dbf:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10)客户.dbf:客户号C(4),客户名C(36),地址C(36),所在城市C(36)订单.dbf:订单号C(4),客户名C(4),职员号C(
要将一个弹出式菜单作为某个控件的快捷菜单,需要在该控件的某事件代码中调用弹出式菜单程序的命令。这个事件是
随机试题
若f(x)的一个原函数为ln2x,则∫xf’(x)dx=().
32岁女性患者,头晕乏力2周,如诊断轻度贫血,则Hb
患者,女,48岁。反复尿频、尿急、尿痛、夜尿增多、低热1年余,近2天来高热,上述症状加剧入院。每次发作抗生素治疗有效。既往有肺结核病史,血压165/95mmHg,尿蛋白(+),白细胞8个/HP,静脉肾盂造影示肾盂肾盏瘢痕狭窄扩张,尿菌培养(一)。最可能的诊
土地使用税的税种为国税,以纳税人实际占用的土地面积为计税依据。()
对“说明”这种表达方式的说法不正确的是()。
材料:最近,班主任李老师发现,班上的张同学傍晚放学后经常留下来帮助当天值日的同学一起搞卫生。李老师想到班级一直缺乏一种助人为乐的良好风气,他认定张同学具有助人为乐的品德,决定树立典型,于是设计了一个主题班会活动,并让张同学做重点发言,谈谈对助人为乐的认识
下列关于智慧城市的说法错误的是:
A、培养果断个性B、可以稳定情绪C、增强控制能力D、让人变得开朗D“会帮助你慢慢地改变孤僻的习性”,“孤僻”与“开朗”是一对相反的词,所以选择D。
John:Oneofthemaindifferencesbetweenaman’sandawoman’sbodyisthatmenaregenerallylesscapableofbendingtheir
A、Thepleasurederivedfromgardening.B、Howtogrowanamazinggarden.C、Howtochooseagoodlocationforagarden.D、Howtos
最新回复
(
0
)