问题 问答题

下面是一个Applet程序,其功能是对输入的字符串进行抽取。要求给出抽取的子串在母串中的起始和终止位置,输出抽取出来的子串。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
程序运行结果如下:


import java.awt.*;
import java.applet.*;
public class ex26_3 extends Applet
TextField tf1;
TextField tf2;
TextField tf3;
Button btn;
String strResult;
public void init()
Label 1 = new Label("字符串: ");
add(l);
tf1 = new TextField(20);
add(tf1);
l = new Label ("开始位置: ");
add(l);
tf2 = new TextField(5);
add(tf2);
l = new Label ("结束位置:");
add(l);
tf3 = new TextField(5);
add(tf3);
btn = new Button("抽取");
add(btn);
strResult = " ".
resize(250, 200);

public void paint(Graphics g)
g.drawString("选中的子串为:", 80, 140);
g.drawString(strResult, 80, 140);

public boolean action(Event e, Object o)
if (o == "抽取")
try
String str1 = tf1.getText();
String str2 = tf2.getText();
String str3 = tf3.getText();
int from = Integer.parseInt(str2);
int to = Integer.parseInt(str1);
strResult = str1.substring(from, to-1);

catch( StringIndexOutOfBoundsException se)
strResult="字符索引越界!";

repaint ( );
return true;

else
return false;


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

答案

参考答案:
g.drawString(strResult, 80, 160)
to=Integer.parseInt(str3)
strResult=str1.substring(from, to)

解析:
本题主要考查字符串的取子串操作和Applet图形绘制以及Applet窗口的设计等。解题关键是熟悉字符串的操作,会使用awt基本构件TextField和Button等以及事件处理机制。本题中第1处,第3个参数不应该和上一条语句相同,否则输出的字符串和上面语句输出的字符串重叠;第2处,应该是将str3所接受的输入作为子串的下界,而不是str1;第3处,调用 substring()方法要注意参数的含义,第1个是子串开始的位置,第2个是子串结束的位置。

单项选择题
多项选择题