问题 问答题

下面是一个Applet程序,其功能是统计输入字符串中的每个字符在该串中出现的次数。要求,窗口中有一个文本框作为输入,一个按钮,点击则进行统计,统计结果以图形方式输出。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
程序运行结果如下:


import java.awt.*;
import java.applet.*;
import java.lang.*;
public class ex29 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();
short cnt[]=new short[65536];
int i;
int n = 50;
for(i=0;i<65536;i++)
cnt[i]=0;
for(i=0;i<str.length();i++)
cnt [i] ++;
for (i=0;i<65536;i++)//对数级Cnt [] 进行初始化
if (cnt [i] >=0)
g.drawStrinq(i+"出现"+cnt[i]+"次",50,n);
n+=20;


public boolean action(Event e, Object o)
if (o == "统计")
repaint();
return true;

else
return false;


ex29_3.html
<HTML>
<HEAD>
<TITLE>ex29_3</TITLE>
</HEAD>
<BODY>
<applet code="ex29_3.class" width=800 height=400 >
</applet>
</BODY>
</HTML>

答案

参考答案:
cnt[str.charAt(i)]++
cnt[i]>0
g.drawString((char)i+"出现"+cnt[i]+"次",50,n)

解析:
本题主要考查字符串操作和字符操作以及Applet图形用户界面设计。解题关键是会将输入的字符串分成每1个字符,并且会用计数器实现对字符进行统计,会使用Applet图形用户界面的基本方法完成结果的输出。本题中,第1处,要明白 cnt的下标是字符在所有的字符集合中的索引值,根据str对象的charAt()方法返回字符索引值,在对这个索引值进行统计;第2处,判断条件必须大于0否则会输出所有的字符;第3处,i变量是字符表中的索引值,对其进行直接类型转换为char则得到了由i索引的字符表中的字符的值。

单项选择题
选择题