1、二级 JAVA机试 41及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下列程序中,要求按照从小到大的顺序输出 1到 100之间所有能被 7整除的数字,请将下列程序补充完整。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 public class Example1_3 public static void main(String argv) int i = 1; _ if(_) System.out.print(i + “,“); _ while(i 100); System.out.printl
2、n(); (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java程序。程序的功能是显示用户在命令行方式下指定的任意驱动器目录的内容。 提示:public Stringlist();/将目录中所有文件名保存在字符数组中返回。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。 源程序文件代码清单如下: import java.io.*; public class FindDirectories public static void main(String args) if(args.length=0) args=ne
3、w String“; try _ String fileName=pathName.list(); for(int i=0;ifileName.length;i+) File f=new File(pathName.getPath(), fileNamei if(_) System. out .println (f. getCanonicalPath ( ); main (new String f.getPath () ); catch(IOException e) e.printStackTrace(); (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是
4、一个 Applet程序,其功能是计算山顶的高度,计算方法是:该山顶由 a点量得仰角度数为 a度,由 b点量得仰角度数为 b度,且测得 a,b 点之间的距离为 c米,求山的高度。要求窗口中有 3个输入框,分别作为 a,b,c 的输入,一个按钮点击后进行计算,结果显示在另一个文本框中(这个文本框不可编辑)。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.A
5、pplet; /* applet code=“ex6_3.class“ width=800 height=400 /applet */ public class ex6_3 extends Applet implements ActionListener Panel pane=new Panel(); Label 11 = new Label(“a 点仰角:“); TextField tfl = new TextField(5); Label 12 = new Label(“b 点仰角:“); TextField tf2 = new TextField(5); Label 13 = new L
6、abel(“a,b之间距离:“); TextField tf3 = new TextField(5); Button btn = new Button(“OK“); Label 14=new Label (“山高“); TextField tf4=new TextField(20); ex6_3 obj23_3; public void init() pane.setLayout (new FiowLayout(FlowLayout.LEFT,10,5); pane.add (11); pane.add (tf1); pane.add (12); pane.add (tf2); add (“N
7、orth“, pane); Panel p2=new Panel(); p2.setLayout(new FlowLayout (FlowLayout. LEFT, 10,5); p2.add(13); p2.add (tf3); p2.add(btn); btn. addActionListener (this); add (“Center“, p2); Panel p3=new Panel(); p3.setLayout(new FlowLayout (FlowLayout.LEFT,10,5); p3.add(14); Utf4. setEditable (true);/U p3.add
8、(tf4); add (“South“, p3); obj23_3=new ex6_3(); public void doMessure(double al,double a2,double a3,TextField tf) double pi=Math. PI,a,b,h; a=al*pi/180.0; b=a2*pi/180.0; Uh=a3/(1.0/Math. tan (a) -1.0/Math. tan (b)/U; Utf.setText (Integer.toString(h)/U; public void actionPerformed(ActionEvent ae) doub
9、le a,b, c; try a=new Double(tf1.getText() .doubleValue b=new Double(tf2,getText () .doubleValue c=new Double(tf3.getText() .doubleValue obj23_3.doMessure(a,b,c, tf4); catch (NumberFormatException nfe) tf4.setText(“wrong number!“); ex6_3. html HTML HEAD TITLEex6_3/TITLE /HEAD BODY applet code=“ex6_3.
10、class“ width=800 height=400 /applet /BODY /HTML(分数:30.00)_二级 JAVA机试 41答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下列程序中,要求按照从小到大的顺序输出 1到 100之间所有能被 7整除的数字,请将下列程序补充完整。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 public class Example1_3 public static void main(String argv) int i = 1; _ if(_) Sys
11、tem.out.print(i + “,“); _ while(i 100); System.out.println(); (分数:30.00)_正确答案:()解析:do i%70 i+;或者 ii+1;或者 i+1; 解析 本题考查知识点:表达式语句、条件语句、循环语句。 解题思路:本题主要考查 Java编程的流程控制。Java 语言中的流程控制主要是通过循环、分支和跳转三种语句来实现的。在解这类题型的时候,首先要分清楚题中要考查的语句类型,比如本题考查了考生对 do-while循环的掌握情况;然后,再根据对应的类型,看题中的语句结构是否完整。题中变量 i从 1循环增加到 99,每一个数字模
12、 7,如果余数为 0就认为这是一个可以被 7整除的数。 本题中,do-while循环缺少了“do”这个循环开始语句,因此第一个空需要填写“do”以使循环体完整;最后也是最重要的,循环一定要保证能够正常结束,许多编程经验丰富的人也会因为一时大意而写出死循环来,这样的错误一定要避免。 第二个空就是使 i值顺序增加,直到 i=100时程序退出循环。 本题中还考查了考生对条件分支语句的掌握,即 if语句。在解条件分支语句的题的时候,首先要找出需要满足的条件是什么,需要通过分支语句分流的条件是什么。比如题中要球能被 7整除,所谓整除就是余数为 0,这样我们就知道,分支条件就是余数值是否为 0,则第二个空
13、应该填写“i%70”。二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java程序。程序的功能是显示用户在命令行方式下指定的任意驱动器目录的内容。 提示:public Stringlist();/将目录中所有文件名保存在字符数组中返回。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。 源程序文件代码清单如下: import java.io.*; public class FindDirectories public static void main(String args) if(args.length=0) args=new Str
14、ing“; try _ String fileName=pathName.list(); for(int i=0;ifileName.length;i+) File f=new File(pathName.getPath(), fileNamei if(_) System. out .println (f. getCanonicalPath ( ); main (new String f.getPath () ); catch(IOException e) e.printStackTrace(); (分数:40.00)_正确答案:()解析:File pathName=new File(args
15、0); f.isDirectory() 解析 本题主要考查对文件操作的基本知识。解答本题的关键是熟练掌握对文件操作的基本知识。其中,File pathName=new File(args0);语句的功能是生成 File类对象pathName;if(f.isDirectory()语句的功能是判断生成的 f对象是否为目录。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet程序,其功能是计算山顶的高度,计算方法是:该山顶由 a点量得仰角度数为 a度,由 b点量得仰角度数为 b度,且测得 a,b 点之间的距离为 c米,求山的高度。要求窗口中有 3个输入框,分别作为 a,
16、b,c 的输入,一个按钮点击后进行计算,结果显示在另一个文本框中(这个文本框不可编辑)。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; /* applet code=“ex6_3.class“ width=800 height=400 /applet */ public class ex6_3 extends Applet implem
17、ents ActionListener Panel pane=new Panel(); Label 11 = new Label(“a 点仰角:“); TextField tfl = new TextField(5); Label 12 = new Label(“b 点仰角:“); TextField tf2 = new TextField(5); Label 13 = new Label(“a,b之间距离:“); TextField tf3 = new TextField(5); Button btn = new Button(“OK“); Label 14=new Label (“山高“)
18、; TextField tf4=new TextField(20); ex6_3 obj23_3; public void init() pane.setLayout (new FiowLayout(FlowLayout.LEFT,10,5); pane.add (11); pane.add (tf1); pane.add (12); pane.add (tf2); add (“North“, pane); Panel p2=new Panel(); p2.setLayout(new FlowLayout (FlowLayout. LEFT, 10,5); p2.add(13); p2.add
19、 (tf3); p2.add(btn); btn. addActionListener (this); add (“Center“, p2); Panel p3=new Panel(); p3.setLayout(new FlowLayout (FlowLayout.LEFT,10,5); p3.add(14); Utf4. setEditable (true);/U p3.add(tf4); add (“South“, p3); obj23_3=new ex6_3(); public void doMessure(double al,double a2,double a3,TextField
20、 tf) double pi=Math. PI,a,b,h; a=al*pi/180.0; b=a2*pi/180.0; Uh=a3/(1.0/Math. tan (a) -1.0/Math. tan (b)/U; Utf.setText (Integer.toString(h)/U; public void actionPerformed(ActionEvent ae) double a,b, c; try a=new Double(tf1.getText() .doubleValue b=new Double(tf2,getText () .doubleValue c=new Double
21、(tf3.getText() .doubleValue obj23_3.doMessure(a,b,c, tf4); catch (NumberFormatException nfe) tf4.setText(“wrong number!“); ex6_3. html HTML HEAD TITLEex6_3/TITLE /HEAD BODY applet code=“ex6_3.class“ width=800 height=400 /applet /BODY /HTML(分数:30.00)_正确答案:()解析:tf4.setEditable(false) ha3/Mathabs(1.0/Math.tan(a)-1.0/Math.tan(b) tf.setText(Double.toString(h) 解析 本题主要考查 Applet窗口编程和 AWT基本构件的使用以及事件处理机制。解题关键是设计出计算山高的方法,并且结合事件处理机制,调用该计算方法实现程序的功能。本题中,第 1处,由于用显示结果的文本框不可编辑,因此参数为 false;第 2处,需要对分母进行取绝对值操作,否则最后结果会产生负数;第 3处,由于 h是 double类型的变量,做数据类型转换时需要调用 Double类的 toString()方法。