题目

下面是一个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[i] [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[i] [j]=0;

j=n/2+1;

a[i] [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[i] [j]==0)

a[i] [j]=k;

else{

i=i+2;

j--;

a[i] [j]=k;

}

}

dw. repaint ( );

}

catch (NumberFormatException nfe)

&n

提示:未搜索到的试题可在搜索页快速提交,您可在会员中心"提交的题"快速查看答案。
答案
查看答案
搜题
相关试题

C语言中 while 和do-while循环的主要区别是

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件更严格

C.do-while允许从外部转到循环体内

D.do-while 的循环体不能是复合语句

若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。

A.1和5

B.2和4

C.4和2

D.5和1

单击表单中的命令按钮,要求弹出一个“您好!”的消息对话框,应该在命令按钮的Click事件中编写代码:______=("您好!")

滚动条的( ) 属性用于指定用户单击滚动条的滚动箭头时,Value属性值的改变量。

A、LargeChange

B、SmallChange

C、Value

D、Change

若在定义语句: int a,b,c,*p=&c; 之后,接着执行以下选项中的语句,则能正确执行的语句是

A ) scanf("%d",a,b,c);

B)scanf("%d%d%d",a,b,c);

C)scanf("%d",p);

D)scanf("%d",&p);

关于我们  |  免责声明  |  联系我们  |  会员须知

Copyright © 奋学网(www.fxuexi.com)All Right Reserved.湘ICP备2021013332号-3

联系我们 会员中心
返回顶部