国家二级(JAVA)机试模拟试卷1 (题后含答案及解析)
题型有:1. 基本操作题 2. 简单应用题 3. 综合应用题
基本操作题(30分) 1. 下列程序中,给出两个整数2和3,分别求2除以3和2乘以3的结果,要求调用类ex1_1的方法method( )来输出相应的结果,请将程序补充完整。程序运行结果如下: 0.6666666666666666 6 public class ex1_1{ public static void main(String[]args) { int n1=2,n2=3; ex1_1 obj1_1=new ex1_1( ); obj1_1. ______; } public void method(int x,int y){ System.out.println(______); System.out.println(______); } }
正确答案:method(n1,n2)(double)x/yX*y
解析:本题主要考查Java语言的数据类型和结构以及不同数据类型之间的转换,和对象调用方法以及基本的运算操作。解题关键是熟悉Java语言的基本数据类型和类型之间的转换,用类的对象来调用方法,以及熟悉Java语言的基本运算。在本题中,第一空通过类ex1_1的对象obj1_1调用类ex1_1的方法method( ),将变量n1和n2作为参数传递给方法。第二空由于x, y都是int,则x/y的结果为0.666....,这会转换为int,其值为0。所以要对数据进行类型转换,将x转换为double型则y也转换为double型,因此结果为double,值为0.666...。第三空无需做类型转换,直接输出x*y的值6即可。
简单应用题(40分)
2. 请完成下列Java程序:首先建立一个类,包含2个私有成员变量,分别为int和double型,并提供公共方法setInt( )和 setDouble( )分别给这两个变量赋值和用toString( )方法显示对象的私有成员变量的值,要求将这个类定义为Serializable,再创建这个类的持久对象,将对象写入名为ex3_2.data的文件中并显示对象的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 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(“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(“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); ________________; System.out.println(e2); }catch(10Exception ioe) { System.out.println(ioe); }catch(ClassNotFoundException cnfe) { System.out.println(cnfe); } } }
正确答案: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对象,接着将它存到一个磁盘文件中,然后再将它作为一个新对象读回。第1个空,通过ObjectOutputStream的对象oos3_2调用writeObject( )方法将ex3_2的对象e1写入磁盘文件ex3_2.data中;第2个空,通过ObjectInputStream的对象ois3_2调用readObject( )方法从磁盘文件ex3_2.data中读取对象,由于读出来的是Object类型的对象,所以需要做类型转换。
综合应用题(30分) 3. 下面是一个Applet程序,其功能是有2个按钮,分别为First和Second,以及一个Labe1构件。要求点击First时则能在 Labe1中显示出Command:First,而点击Second时则能显示出Command:Second,要求只能使用重载一次actionPerformed( )方法。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: import java.awt.*; import java.awt.event.*; import java.applet.*; /* <applet code=ex2_3.class width=800 height=400> </applet> */ public class ex2_3 extends Applet implements ActionListener { private String str=“ok”; private Labe1 1; private Button btn; public void init( ) { setLayout(null); 1=new Label(str); 1.reshape(10, 10,
150, 30); add(1); btn = new Button(“First”); btn.reshape(10, 50, 60, 20); 1.addActionListener(this); add(btn); btn = new Button(“Second”); btn.reshape(10, 100, 60, 20); btn.setActionCommand(“First”); btn.addActionListener(this); add(btn); } public void actionPerformed(ActionEvent ae)
{ str=“Command: “ +ae.getActionCommand( ); btn.setText(str); } } ex2_3.htm1 <HTML> <HEAD> <TITLE>ex2_3</TITLE> </HEAD> <BODY> <applet code=“ex2_3.class” width=800 height=400 > </applet> </BODY> </HTML>
正确答案:btn.addActionListener(this)btn.setActionCommand(“second”)1.setText(str)
解析:本题主要考查Java语言中高级事件ActionEvent和AWT基本构件Label的常用方法的使用。解题关键是熟练掌握动作事件ActionEvent和Label构件的常用方法。在本题中,第1处,明确注册的事件监听器是监听按钮的,而不是Label的;第 2处,调用ActionEvent的setActionCommand( )方法改变了ActionCommand,使按下第二个按钮时显示Command:second而不是Command:First。第3处,调用Label的setText( )方法,而不是Button的方法。
因篇幅问题不能全部显示,请点此查看更多更全内容