下面是一个Applet程序,其功能是分析任意输入的字符串,将字符串中由空格隔开的字串提取并显示出来。要求,窗口中有一个输入文本框,用于接受输入的字符串,一个按钮,点击则开始分析,分析结果用图形方式打印在窗口下面的区域中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.awt.*; import java.applet.*; import java.util.StringTokenizer; public class ex27_3 extends Applet{ private TextField tf; private Button btn; public void init(){tf = new TextField(25);add(tf);btn= new Button("分析");add(btn);resize(250, 200); } public void paint(Graphics g){String str = tf.getText();StringTokenizer st = new StringTokenizer(tf);int n = 80;while (!st.hasMoreTokens()){ String tem = st.nextToken(); g.drawString(tem, n, 80); n += 20;} } public boolean action(Event e, Object o){if (o == "分析") { repaint(); return true;}else return false; } } ex27_3.html <HTML> <HEAD> <TITLE>ex27_3</TITLE> </HEAD> <BODY> <applet code="ex27_3.class" width=800 height=400 </applet> </BODY> </HTML>
参考答案:
解析:new StringTokenizer(str) St.hasMoreTokens() g.drawString(tem, 80,n) 本题主要考查字符串的分割和Applet图形界面相结合的综合应用。解题关键是熟悉字符串的分割方法,使用 StringTokenizer的对象来对String类的对象进行分割。本题中,第1处,StringTokenizer类的构造方法应该以String类的对象作为入口参数;第2处,判断语句应该是当对象st中还有分割串的时候则继续进行;第3处,drawString()方法的参数第2个表示输出字符串起始位置的横坐标,第3个是纵坐标,如果n作为横坐标,则输出的字符串会发生重叠。