1、二级 JAVA机试 1及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下列程序中,要求按照从大到小的顺序输出 0-100之间(包括 0和 100)的能被 3整除的所有偶数,并输出符合上述要求的数的个数,请将程序补充完整。程序运行结果如下: 96,90,84,78,72,66,60,54,48,42,36,30,24,18,12,6,0, 17 public class ex3_1 private int cnt=0; public static void main(String args) ex3_1 obj 3_1=new ex
2、3_1 ( ); obj 3_1.method3_1 ( ); public void method3_1 () for (_) if(_) System.out .print (i+“, “); _; System. out.println ( ); System. out .println (cnt); (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java程序:首先建立一个类,包含 2个私有成员变量,分别为 int和 double型,并提供公共方法 setInt()和 setDouble()分别给这两个变量赋值和用 toString()方法显
3、示对象的私有成员变量的值,要求将这个类定义为 Serializable,再创建这个类的持久对象,将对象写入名为 ex3_2data 的文件中并显示对象的 2个成员变量,最后从这个文件中读取这个对象并显示对象的 2个成员变量。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下: ex3_2: i=123 d=123.456 ex3_2: i=123 d=123.456 import java.io.*; public class ex3_2 implements Serializable private int n3_2; private dou
4、ble d3_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); Sys
5、tem.out.println(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 ObjectI
6、nputStream(fis3_2); _; System.out.println(e2); catch(10Exception ioe) System.out.println(ioe);catch(ClassNotFoundException cnfe) System.out.println(cnfe); (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将 1分钟化为 60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数
7、,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为 4小时 23分 47秒,要求换算成以秒做单位的时间。 请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:30.00)_二级 JAVA机试 1答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下列程序中,要求按照从大到小的顺序输出 0-100之间(包括 0和 100)的能被 3整除的所有偶数,并输出符合上述要求的数的个数,请将程序
8、补充完整。程序运行结果如下: 96,90,84,78,72,66,60,54,48,42,36,30,24,18,12,6,0, 17 public class ex3_1 private int cnt=0; public static void main(String args) ex3_1 obj 3_1=new ex3_1 ( ); obj 3_1.method3_1 ( ); public void method3_1 () for (_) if(_) System.out .print (i+“, “); _; System. out.println ( ); System. ou
9、t .println (cnt); (分数:30.00)_正确答案:()解析:int i = 100;i=0;i- i%6=0 或者 i%2=0 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(double x) d3_2 = x; public void setInt(int x) n3_2 = x; public String toString() return(“e
10、x3_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(“ex3_2.data“); ObjectOutputStream oos3_2 = new ObjectOutputStream(fos3_2); _; catch
11、(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.println(ioe);catch(ClassNotFoundException cnfe) System.out.println(cnfe);
12、(分数:40.00)_正确答案:()解析:oos3_2_writeObject(e1) e2 = (ex3_2)ois3_2.readObject() 解析 本题主要考查对象串行化的方法和可串行化类的构造方法。解题关键是熟练掌握串行化的概念和目的,熟悉串行化的方法,如FileOutputStream类的用法等,在 Java中这些方法已经成为一种模式,需要熟记。本题中,通过构造可串行化类 ex3_2实现了 Serializable接口并且含有 2个成员变量 n3_2和 d3_2,这 2个成员变量需要包括在数据流中以便保存某个 ex3_2对象的整个状态,程序首先创建了一个 ex3_2对象,接着将它
13、存到一个磁盘文件中,然后再将它作为一个新对象读回。第 1个空,通过 ObjectOutputStream的对象 oos3_2调用writeObject()方法将 ex3_2的对象 e1写入磁盘文件 ex3_2.data中;第 2个空,通过ObjectInputStream的对象 ois3_2调用 readObject()方法从磁盘文件 ex3_2.data中读取对象,由于读出来的是 Object类型的对象,所以需要做类型转换。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将 1分钟化为 60秒,依此类
14、推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为 4小时 23分 47秒,要求换算成以秒做单位的时间。 请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:30.00)_正确答案:()解析:out = h * 3600 + m * 60+s g.drawstring(“合计:“ + nSum+ “秒“,20,90) System.out.println(“合计:“+nSum+ “秒“) 解析 本题主要考查 Applet的窗口,文件和文件 I/O,面向对象的基本概念以及基于文本的应用。解题关键是熟悉 Applet的执行过程,会使用 Graphics类的基本方法在用户界面中输出字符信息,会将 Applet面向对象的基本思想与文件操作相结合,编写有一定综合性的程序。本题中,第 1处,基本常识,1 小时等于 3600秒,这里主要是要熟练掌握运算表达式的写法。第 2处与第 3处相同的错误,不可以直接用。ObjTime3_3 对象访问类的成员变量,应该调用成员方法,如果不调用方法去计算,得不到正确的结果。