下面是一个Applet程序,其功能是打印一个任意进制的乘法表。要求输入乘法表的进制,点击ok则打印出该乘法表。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.awt.*; import java.applet.*; import java.lang.*; public class ex30 3 extends Applet{ private TextField tf; private Button btn; public void init(){tf = new TextField(25);add(tf);btn = new Button("OK");add(btn);resize(250, 200); } public void paint(Graphics g){ try{ int n = tf.getText(); int i,j,x=20,y=60; for(i=0;i<n;i++){ for (j=1; j<=n; j++) {g.drawString(Integer.toString(i)+"*"+Integer.toString(j)+"="+Integer.toString(i*j),i*x,j*y); } } } catch(NumberFormatException nfe){ g.drawString("error number!",20,50); } } public boolean action(Event e, Object o){ if (o == "OK"){ repaint(); return true; } else return false; } } ex30_3.html <HTML> <HEAD> <TITLE>ex30_3</TITLE> </HEAD> <BODY> <applet code="ex30_3.class" width=800 height=400 > </applet> </BODY> </HTML>
参考答案:
解析:Integer.parseInt(tf.getText()) i=1;i<=n;i++ i*50+x,j*20+y 本题主要考查Applet窗口设计,for循环语句。解题关键是掌握Applet窗口的基本事件机制,会基本的窗口布局,会使用for循环进行程序设计。本题中,第1处,tf对象调用getText()方法返回的是String类的对象,所以需要做类型转换;第2处,注意循环变量的上下界应该分别是1和n如果为0乘法表中会出现0项;第3处,坐标计算公式,只要能使结果正常分布在窗口中即可。