下面是一个Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将1分钟化为60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为4小时23分47秒,要求换算成以秒做单位的时间。 请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.io.*; import java.awt.*; import java.applet.*; /* <applet code=ex3_3.class width=800 height=400> </applet> */ public class ex3_3 extends Applet{ public void paint(Graphics g){ int nSum; class myTime3_3{ public int h; public int m; public int s; public int out; public int caculateSecond(){out = h*60+m*60+s;return out; } } myTime3_3 objTime3_3 = new myTime3_3 ); objTime3_3.h = 4; objTime3_3.m = 23; objTime3_3.s = 47; nSum = objTime3_3.caculateSecond(); g.drawString (时: "+objTime3_3.h, 20 30); g.drawString ("分: "+objTime3_3.m, 20 50); g.drawString ("秒: "+objTime3_3.s, 20, 70); g.drawString ("合计: "+objTime3_3.out+"秒", 20, 90); try { FileOutputStream los3_3 = new FileOutputStream("out3_3.txt,,); BufferedOutputStream bos3_3=new BufferedOutputStream(fos3_3,1024); PrintStream ps3_3=new PrintStream(bos3_3,false); System.setOut(ps3_3); System.out.println("合计: "+objTime3_3.out+"秒"); ps3_3.close(); } catch(IOException ioe) { System.out.println(ioe); } } } ex3_3. html <HTML> <HEAD> <TITLE>ex3_3</TITLE> </HEAD> <BODY> <applet code="ex3_3.class" width=800 height=400 > </applet> </BODY> </HTML>
参考答案:
解析:out = h * 3600 + m * 60+sg.drawstring("合计:" + nSum+ "秒",20,90)System.out.println("合计:"+nSum+ "秒") 本题主要考查Applet的窗口,文件和文件I/O,面向对象的基本概念以及基于文本的应用。解题关键是熟悉Applet的执行过程,会使用Graphics类的基本方法在用户界面中输出字符信息,会将Applet面向对象的基本思想与文件操作相结合,编写有一定综合性的程序。本题中,第1处,基本常识,1小时等于3600秒,这里主要是要熟练掌握运算表达式的写法。第2处与第3处相同的错误,不可以直接用。ObjTime3_3对象访问类的成员变量,应该调用成员方法,如果不调用方法去计算,得不到正确的结果。