1、计算机二级 JAVA-148 及答案解析(总分:69.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:-1.00)1.下列程序中,给出两个整数 2 和 3,分别求 2 除以 3 和 2 乘以 3 的结果,要求调用类 ex1_1 的方法method()来输出相应的结果,请将程序补充完整。程序运行结果如下: 0.6666666666666666 6 public class ex1_1 public static void main(Stringargs) int n1=2,n2=3; ex1_1 obj1_1=new ex1_1(); obj1_1. _; public void
2、 method(int x,int y) System.out.println(_); System.out.println(_); (分数:-1.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成以下程序,首先由一个类 Example2_3 实现 Serializable 接口,并有三个成员变量,分别为 int型、double 型和 String 型,可以用 toString 的方法显示这三个成员变量。在 main 方法中创建这个Example2_3 的持久对象,根据用户在命令行输入的三个参数来设定其中成员变量的值。然后,将这个对象写入名为 TheSerial.data 的文
3、件,并显示成员变量。最后从文件 TheSerial.data 中读出三个成员变量并显示出来。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 import java.io.*; class TheSerial implements Serializable private int intValue; private double doubleValue; private String string; TheSerial() intValue = 123; doubleValue = 12.34; string = “Serialize Test“; public
4、 void setDouble(double d) doubleValue = d; public void setInt(int i) intValue = i; public void setString(String s) string = s; public String toString() return(“int=“+intValue+“double=“+doubleValue+“ string=“+string); public class Example2_3 public static void main(String argv) TheSerial e1 = new The
5、Serial(); TheSerial e2; try e1.setInt(Integer.parseInt(argv0); e1.setDouble(Double.parseDouble(argv1); e1.setStringargv2); catch(Exception e) e1.setString(e.getMessage); System.out.println(e1); try FileOutputStream oS = new FileOutputStream(“TheSerial.data“); ObjectOutputStream oIS = new ObjectOutpu
6、tStream(oS); _; catch(IOException ioException) System.out.println(ioException.getMessage(); try FileInputStream iS = new FileInputStream(“TheSerial. data“); ObjectInputStream oIS = new ObjectInputStream(iS); _ System.out.println(e2); catch(IOException ioException) System.out.println(ioException.getM
7、essage(); catch(ClassNotFoundException cnfException) System.out.println(cnfException.getMessage(); (分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.本题程序的功能是计算圆和三角形的面积。通过菜单“选择”可以分别进行圆和三角形面积的计算。单击菜单项“圆面积计算”,窗口中就会显示两个文本框和一个“确定”按钮,在第一个文本框中输入圆的半径,单击“确定”按钮后就可以在第二个文本框中显示圆的面积。单击菜单项“三角形面积计算”,窗口中就会显示 4 个文本框和一个“确定”按钮,在前三个
8、文本框中分别输入三角形三个边的长度,单击“确定”按钮后,如果三个边的长度不能组成三角形,结果文本框中会给出提示信息,否则显示三角形的面积;如果输入的值不是数值,则会给出提示信息。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。 import java.awt.*; import java.awt.event.*; class circle extends Panel implements AetionListener double r,area; TextField radius = null,result = null; Button b = null; _; radius
9、 = new TextField(10); result = new TextField(10); b = new Button(“确定“); add (new Label (“输入半径“); add (radius); add(new Label(“面积是“); add(result); add(b); b.addActionListener (this); result,setEnabled (false); public void actionPerformed(ActionEvent e) try r = Double.parseDouble (radius.getText (); a
10、rea =Math.PI*r*r; result,setText (“+area); catch (Exception ee) radius.setText (“请输入数字字符“); class triangle extends Panel implements ActionListener double a = 0,b = 0,c = 0,area; TextField border a = new TextField(6) ; TextField border b = new TextField(6) ; TextField border c = new TextField(6) ; Re
11、sult = new TextField(24); Button button = new Button(“确定“); triangle () add(new Label(“输入三边的长度“); add (border_a); add (border_b); add (border_c); add(new Label(“面积是:“); add (result); add (button); button,addActionListener (this); result.setEnabled(false); public void actionPerformed(ActionEvent e) t
12、ry a = Double.parseDoubleborder_a.getText(); b = Double.parseDouble(border_b.getText(); c = Double.parseDouble(border_c.getText(); if(a+bca+cbc+ba) double p = (a+b+c)/2; area = Math.sqrt(p*(p-a)*(p-b)*(p-c); result.setText(“+ area); else result.setText (“您输入的数字不能形成三角形“); catch(Exception ee) result.s
13、etText (“请输入数字字符“); class Win _ implements ActionListener MenuBar bar = null; Menu menu = null; MenuItem item1,item2; circle circle; triangle trangle; Win() bar = new MenuBar(); menu = new Menu(“选择“); setSize(300,200); item1 = new MenuItem(“圆面积计算“); item2 = new MenuItem(“三角形面积计算“); menu.add(item1);
14、menu.add(item2); bar.add(menu); setMenuBar(bar); circle = new circle(); trangle = new triangle(); item1.addActionListener(this); item2.addActionListener(this); setVisible(true); public void actionPerformed(ActionEvent e) if (e.getSource() = item1) removeAll(); add(circle,“Center“); validate(); else
15、if(e.getSource() = item2) removeAll (); add (trangle,“Center“); validate (); public class advance public static void main (String args) Win win = new Win(); win.setTitle (“advance “); win.setBounds (100,100,700,300); win.setVisible (true); win.addWindowListener (_) public void windowClosing(WindowEv
16、ent e) System.exit (0); ); (分数:30.00)_计算机二级 JAVA-148 答案解析(总分:69.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:-1.00)1.下列程序中,给出两个整数 2 和 3,分别求 2 除以 3 和 2 乘以 3 的结果,要求调用类 ex1_1 的方法method()来输出相应的结果,请将程序补充完整。程序运行结果如下: 0.6666666666666666 6 public class ex1_1 public static void main(Stringargs) int n1=2,n2=3; ex1_1 obj1_
17、1=new ex1_1(); obj1_1. _; public void method(int x,int y) System.out.println(_); System.out.println(_); (分数:-1.00)_正确答案:()解析:method(n1,n2) (double)x/y x*y 解析 本题主要考查 Java 语言的数据类型和结构以及不同数据类型之间的转换,和对象调用方法以及基本的运算操作。解题关键是熟悉 Java 语言的基本数据类型和类型之间的转换,用类的对象来调用方法,以及熟悉 Java 语言的基本运算。在本题中,第一空通过类 ex1_1 的对象 obj1_1
18、调用类 ex1_1 的方法 method(),将变量 n1 和 n2 作为参数传递给方法。第二空由于 x, y 都是 int,则 x/y 的结果为 0.666,这会转换为 int,其值为 0。所以要对数据进行类型转换,将 x 转换为 double 型则 y 也转换为 double 型,因此结果为 double,值为 0.666.。第三空无需做类型转换,直接输出 x*y 的值 6 即可。二、2简单应用题(总题数:1,分数:40.00)2.请完成以下程序,首先由一个类 Example2_3 实现 Serializable 接口,并有三个成员变量,分别为 int型、double 型和 String
19、型,可以用 toString 的方法显示这三个成员变量。在 main 方法中创建这个Example2_3 的持久对象,根据用户在命令行输入的三个参数来设定其中成员变量的值。然后,将这个对象写入名为 TheSerial.data 的文件,并显示成员变量。最后从文件 TheSerial.data 中读出三个成员变量并显示出来。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 import java.io.*; class TheSerial implements Serializable private int intValue; private double do
20、ubleValue; private String string; TheSerial() intValue = 123; doubleValue = 12.34; string = “Serialize Test“; public void setDouble(double d) doubleValue = d; public void setInt(int i) intValue = i; public void setString(String s) string = s; public String toString() return(“int=“+intValue+“double=“
21、+doubleValue+“ string=“+string); public class Example2_3 public static void main(String argv) TheSerial e1 = new TheSerial(); TheSerial e2; try e1.setInt(Integer.parseInt(argv0); e1.setDouble(Double.parseDouble(argv1); e1.setStringargv2); catch(Exception e) e1.setString(e.getMessage); System.out.pri
22、ntln(e1); try FileOutputStream oS = new FileOutputStream(“TheSerial.data“); ObjectOutputStream oIS = new ObjectOutputStream(oS); _; catch(IOException ioException) System.out.println(ioException.getMessage(); try FileInputStream iS = new FileInputStream(“TheSerial. data“); ObjectInputStream oIS = new
23、 ObjectInputStream(iS); _ System.out.println(e2); catch(IOException ioException) System.out.println(ioException.getMessage(); catch(ClassNotFoundException cnfException) System.out.println(cnfException.getMessage(); (分数:40.00)_正确答案:()解析:oOS.writeObject(e1) e2=(TheSerial)oIS.readObject() 解析 本题主要考查串行化相
24、关的方法和实现。解题中首先要掌握串行化的基本过程和反串行化的过程。串行化过程首先要创建一个输出流 FileOutputStream,通过该类的实例对文件进行访问,然后创建一个 ObJectOutput Stream 对象,通过 writeObject()方法来实现对象的序列化。第一个空就是使用 writeObject()实现序列化。 反序列化过程中用 FileInputStream 对象建立读取文件的连接,并使用该对象创建一个 ObiectInputStream 的实例,这个 ObjectInput Stream 实例的 readObject()方法就可以实现对象的反序列化。第二个空就是使用
25、readObject()实现反序列化。三、3综合应用题(总题数:1,分数:30.00)3.本题程序的功能是计算圆和三角形的面积。通过菜单“选择”可以分别进行圆和三角形面积的计算。单击菜单项“圆面积计算”,窗口中就会显示两个文本框和一个“确定”按钮,在第一个文本框中输入圆的半径,单击“确定”按钮后就可以在第二个文本框中显示圆的面积。单击菜单项“三角形面积计算”,窗口中就会显示 4 个文本框和一个“确定”按钮,在前三个文本框中分别输入三角形三个边的长度,单击“确定”按钮后,如果三个边的长度不能组成三角形,结果文本框中会给出提示信息,否则显示三角形的面积;如果输入的值不是数值,则会给出提示信息。请将
26、下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。 import java.awt.*; import java.awt.event.*; class circle extends Panel implements AetionListener double r,area; TextField radius = null,result = null; Button b = null; _; radius = new TextField(10); result = new TextField(10); b = new Button(“确定“); add (new Label (“输入
27、半径“); add (radius); add(new Label(“面积是“); add(result); add(b); b.addActionListener (this); result,setEnabled (false); public void actionPerformed(ActionEvent e) try r = Double.parseDouble (radius.getText (); area =Math.PI*r*r; result,setText (“+area); catch (Exception ee) radius.setText (“请输入数字字符“);
28、 class triangle extends Panel implements ActionListener double a = 0,b = 0,c = 0,area; TextField border a = new TextField(6) ; TextField border b = new TextField(6) ; TextField border c = new TextField(6) ; Result = new TextField(24); Button button = new Button(“确定“); triangle () add(new Label(“输入三边
29、的长度“); add (border_a); add (border_b); add (border_c); add(new Label(“面积是:“); add (result); add (button); button,addActionListener (this); result.setEnabled(false); public void actionPerformed(ActionEvent e) try a = Double.parseDoubleborder_a.getText(); b = Double.parseDouble(border_b.getText(); c =
30、 Double.parseDouble(border_c.getText(); if(a+bca+cbc+ba) double p = (a+b+c)/2; area = Math.sqrt(p*(p-a)*(p-b)*(p-c); result.setText(“+ area); else result.setText (“您输入的数字不能形成三角形“); catch(Exception ee) result.setText (“请输入数字字符“); class Win _ implements ActionListener MenuBar bar = null; Menu menu = n
31、ull; MenuItem item1,item2; circle circle; triangle trangle; Win() bar = new MenuBar(); menu = new Menu(“选择“); setSize(300,200); item1 = new MenuItem(“圆面积计算“); item2 = new MenuItem(“三角形面积计算“); menu.add(item1); menu.add(item2); bar.add(menu); setMenuBar(bar); circle = new circle(); trangle = new trian
32、gle(); item1.addActionListener(this); item2.addActionListener(this); setVisible(true); public void actionPerformed(ActionEvent e) if (e.getSource() = item1) removeAll(); add(circle,“Center“); validate(); else if(e.getSource() = item2) removeAll (); add (trangle,“Center“); validate (); public class a
33、dvance public static void main (String args) Win win = new Win(); win.setTitle (“advance “); win.setBounds (100,100,700,300); win.setVisible (true); win.addWindowListener (_) public void windowClosing(WindowEvent e) System.exit (0); ); (分数:30.00)_正确答案:()解析:circle()。 extends Frame。 new WindowAdapter()。