1、二级 JAVA 机试-119 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:33.00)1.System. out .println (cnt);(分数:33.00)_二、2简单应用题(总题数:1,分数:33.00)2.请完成下列 Java 程序:首先建立一个类,包含 2 个私有成员变量,分别为 int 和 double 型,并提供公共方法 setInt()和 setDouble()分别给这两个变量赋值和用 toString()方法显示对象的私有成员变量的值,要求将这个类定义为 Serializable,再创建这个类的持久对象,将对象写入名为 ex3
2、_2data 的文件中并显示对象的 2 个成员变量,最后从这个文件中读取这个对象并显示对象的 2 个成员变量。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下:ex3_2: i=123 d=123.456ex3_2: i=123 d=123.456import java.io.*;public class ex3_2 implements Serializable private int n3_2;private double d3_2;ex3_2() n3_2 = 25;d3_2 = 12.23;public void setDouble(d
3、ouble x) d3_2 = x;public void setInt(int x) n3_2 = x;public String toString() return(“ex3_2: i=“ + n3_2 + “d=“ + d3_2);public static void main(String arg) ex3_2 e1 = new ex3_2 );ex3_2 e2;e1.setInt(123);e1.setDouble(123.456);System.out.println(e1);try FileOutputStream fos3_2 = new FileOutputStream(“e
4、x3_2.data“);ObjectOutputStream oos3_2 = new ObjectOutputStream(fos3_2);_;catch(IOException ioe) System.out.println(ioe);try FileInputStream fis3_2 = new FileInputStream(“ex3_2.data“);ObjectInputStream ois3_2 = new ObjectInputStream(fis3_2);_;System.out.println(e2);catch(10Exception ioe) System.out.p
5、rintln(ioe);catch(ClassNotFoundException cnfe) System.out.println(cnfe);(分数:33.00)_三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将 1 分钟化为 60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt 文件中,本题给出确定的时间为 4 小时 23 分 47 秒,要求换算成
6、以秒做单位的时间。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_二级 JAVA 机试-119 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:33.00)1.System. out .println (cnt);(分数:33.00)_正确答案:(int i = 100;i=0;i-i%6=0 或者 i%2=0public class ex3_2 implements Serializable private int n3_2;private double d3
7、_2;ex3_2() n3_2 = 25;d3_2 = 12.23;public void setDouble(double x) d3_2 = x;public void setInt(int x) n3_2 = x;public String toString() return(“ex3_2: i=“ + n3_2 + “d=“ + d3_2);public static void main(String arg) ex3_2 e1 = new ex3_2 );ex3_2 e2;e1.setInt(123);e1.setDouble(123.456);System.out.println(
8、e1);try FileOutputStream fos3_2 = new FileOutputStream(“ex3_2.data“);ObjectOutputStream oos3_2 = new ObjectOutputStream(fos3_2);_;catch(IOException ioe) System.out.println(ioe);try FileInputStream fis3_2 = new FileInputStream(“ex3_2.data“);ObjectInputStream ois3_2 = new ObjectInputStream(fis3_2);_;S
9、ystem.out.println(e2);catch(10Exception ioe) System.out.println(ioe);catch(ClassNotFoundException cnfe) System.out.println(cnfe);(分数:33.00)_正确答案:(oos3_2_writeObject(e1)e2 = (ex3_2)ois3_2.readObject()解析:解析本题主要考查对象串行化的方法和可串行化类的构造方法。解题关键是熟练掌握串行化的概念和目的,熟悉串行化的方法,如 FileOutputStream 类的用法等,在 Java 中这些方法已经成为一
10、种模式,需要熟记。本题中,通过构造可串行化类 ex3_2 实现了 Serializable 接口并且含有 2 个成员变量 n3_2 和 d3_2,这2 个成员变量需要包括在数据流中以便保存某个 ex3_2 对象的整个状态,程序首先创建了一个 ex3_2 对象,接着将它存到一个磁盘文件中,然后再将它作为一个新对象读回。第 1 个空,通过 ObjectOutputStream的对象 oos3_2 调用 writeObject()方法将 ex3_2 的对象 e1 写入磁盘文件 ex3_2.data 中;第 2 个空,通过 ObjectInputStream 的对象 ois3_2 调用 readObj
11、ect()方法从磁盘文件 ex3_2.data 中读取对象,由于读出来的是 Object 类型的对象,所以需要做类型转换。三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将 1 分钟化为 60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt 文件中,本题给出确定的时间为 4 小时 23 分 47 秒,要求换算成以秒做单位的时间。请改正程序中的错误(有下划
12、线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_正确答案:(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 对象访问类的成员变量,应该调用成员方法,如果不调用方法去计算,得不到正确的结果。