1、二级 JAVA 机试-6 及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)请完善程序(程序文件名:Java_1.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求请完善程序并进行调试,使程序输出结果如下图所示。源程序:import javax.swing.JOptionPane;public class Java_1 public static void main(String args) String s1,s2,s3,s4,output;s1=new String(“hel
2、lo“);s2=new String(“good bye“);s3=new String(“Happy Birthday“);s4=new String(“happy birthday“);output=“s1=“+s1+“ins2=“+s2+“ins3=“+s3+“ins4=“+s4+“/n/n“/测试字符串相等if(s1.equals(“hello“)output=output+“U (1) /U“;else output=output+“s1 does not equal/“hello/“/n“:/用=测试相等if(s1=“hello“)output+=“s1 equals/“hello
3、/“in“:else output+=“s1 does not equal/“hello/“/n“:/忽略字符格式测试相等if(s3.equalsIgnoreCase(s4)output+=“s3 equals s4/n“:else output+=“s3 does not equal s4/n“:/内容比较output+=“/pareTo(s2)is“+pareTo(s2)+“/pareTo(s1)is“+pareTo(s1)+“/pareTo(s1)is“+pareTo(s1)+“/pareTo(s4)is“+pareTo(s4)+“/pareTo(s3)is“+s4compareTo(s
4、3)+”/n/n“;/80 试包含字符格式的域匹配if(s3.regionMatehes(0,s4,0,5)output+=“First 5 characters of s3 and s4 match/n“:else output+=“First 5 characters of s3 and s4 do not match/n“:/忽略字符格式的域匹配if(s3.regionMatches(true,0,s4,0,5)output+=“First 5 characters of s3 and s4 match“:else output+=“First 5 characters of s3 an
5、d s4 do not match“:JOptionPaneU (2) /U(null,output,“字符串构造方法示例“,JOptionPane.INFORMATION_MESSAGE):System.exit(0);(分数:30.00)(1).(分数:15.00)填空项 1:_填空项 1:_二、B2简单应用题/B(总题数:1,分数:40.00)请完善程序(程序文件名:Java_2.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求在主线程中创建了一个线程,该线程休眠 50ms,然后给变量 i 赋值。主线程要等该子线程结束后获得并输
6、出 i 的值,使程序的输出结果如下:j=10,a.i=10源程序:public class Java_2 public static void main(String args) try Sleep a=new Sleep();Thread t=new Thread(a);t.U (1) /U();t.join();int J=a.i;System.out.println(“j=“+j+“,a.i=“+a.i); catch(Exception e) class Sleep implements Runnable int i;public void run() try ThreadU (2)
7、/U(50);i=10; catch(InterruptedException e) (分数:40.00)(1).(分数:20.00)填空项 1:_填空项 1:_三、B3综合应用题/B(总题数:1,分数:30.00)请完善程序(程序文件名:Java_3.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求阅读 Java_3.java 程序,该程序的功能是判断用户以命令行方式输入的类名是否在 Java 类中。完成程序的编写,运行所得结果为:java.lang.Name 不在 Java 类库中。源程序:/程序的功能是,判断用户以命令行方式使用
8、键盘输入的路径类名是否在 Java 类库中public class Java_3 public static void main(String args) String className;if(args.length0) className=args0;else className=“java.lang.Name“;U (1) /U Class e=Class.forName(U (2) /U);System.out.println(className+“是 Java 类库中已有的类。“); catch(ClassNotFound U(3) /U e) System.out.println(
9、className+“不在 Java 类库中。“);(分数:30.00)(1).(分数:10.00)填空项 1:_填空项 1:_填空项 1:_二级 JAVA 机试-6 答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)请完善程序(程序文件名:Java_1.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求请完善程序并进行调试,使程序输出结果如下图所示。源程序:import javax.swing.JOptionPane;public class Java_1 public stat
10、ic void main(String args) String s1,s2,s3,s4,output;s1=new String(“hello“);s2=new String(“good bye“);s3=new String(“Happy Birthday“);s4=new String(“happy birthday“);output=“s1=“+s1+“ins2=“+s2+“ins3=“+s3+“ins4=“+s4+“/n/n“/测试字符串相等if(s1.equals(“hello“)output=output+“U (1) /U“;else output=output+“s1 doe
11、s not equal/“hello/“/n“:/用=测试相等if(s1=“hello“)output+=“s1 equals/“hello/“in“:else output+=“s1 does not equal/“hello/“/n“:/忽略字符格式测试相等if(s3.equalsIgnoreCase(s4)output+=“s3 equals s4/n“:else output+=“s3 does not equal s4/n“:/内容比较output+=“/pareTo(s2)is“+pareTo(s2)+“/pareTo(s1)is“+pareTo(s1)+“/pareTo(s1)i
12、s“+pareTo(s1)+“/pareTo(s4)is“+pareTo(s4)+“/pareTo(s3)is“+s4compareTo(s3)+”/n/n“;/80 试包含字符格式的域匹配if(s3.regionMatehes(0,s4,0,5)output+=“First 5 characters of s3 and s4 match/n“:else output+=“First 5 characters of s3 and s4 do not match/n“:/忽略字符格式的域匹配if(s3.regionMatches(true,0,s4,0,5)output+=“First 5 ch
13、aracters of s3 and s4 match“:else output+=“First 5 characters of s3 and s4 do not match“:JOptionPaneU (2) /U(null,output,“字符串构造方法示例“,JOptionPane.INFORMATION_MESSAGE):System.exit(0);(分数:30.00)(1).(分数:15.00)填空项 1:_ (正确答案:s1 equals/“hello/“/n)解析:解析 由程序和输出结果可以看出此处输出语句为 s1 equals/“hello/“/n,其中“/“”转义输出“”。
14、由程序中 else-的输出也可以推断出内容为此。填空项 1:_ (正确答案:showMessageDialog)解析:解析 用对话框输出,详细解析可参见第 2 套题的综合应用题。 程序解析 本程序主要是比较字符串,然后用对话框输出结果。涉及几个方法: (1) public boolean equals(Object anObject)将此字符串与指定的对象比较。如果相等,则返回 true;否则返回 false。 (2) public boolean equalsIgnoreCase(String anotherString)将此 String 与另一个 String 进行比较,不考虑大小写。如
15、果两个字符串的长度相等,并且两个字符串中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。 (3) public int compareTo(String anotherString)按字典顺序比较两个字符串。如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。 (4) 用“=”比较两个字符串对象,只有指向的是同一个对象时才返回真。二、B2简单应用题/B(总题数:1,分数:40.00)请完善程序(程序文件名:Java_2.java)并进行调试。请在下画线处填入正确内
16、容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求在主线程中创建了一个线程,该线程休眠 50ms,然后给变量 i 赋值。主线程要等该子线程结束后获得并输出 i 的值,使程序的输出结果如下:j=10,a.i=10源程序:public class Java_2 public static void main(String args) try Sleep a=new Sleep();Thread t=new Thread(a);t.U (1) /U();t.join();int J=a.i;System.out.println(“j=“+j+“,a.i=“+a.i); catch(Ex
17、ception e) class Sleep implements Runnable int i;public void run() try ThreadU (2) /U(50);i=10; catch(InterruptedException e) (分数:40.00)(1).(分数:20.00)填空项 1:_ (正确答案:start)解析:解析 由于创建了线程 t,但是 t 不能自动运行,需要 start()方法使 t 可运行。所以此处应填start。填空项 1:_ (正确答案:sleep)解析:解析 题目要求中提到该线程休眠 50ms,然后给变量赋值,所以此处应填让线程休眠的方法slee
18、p。 程序解析 本程序通过实现 Runnable 接口重写 run()方法创建线程 t。在此程序中用到了 3 个方法: (1) start()刚创建的线程 t 不会自动运行,需要 start 方法把嵌入线程中的虚拟 CPU 置为可运行状态,意味着线程可被调度执行。 (2) t.join()使当前的线程等待,直到 t 结束为止,线程恢复到可运行状态。 (3) sleep()该方法使一个线程暂停一段固定时间。三、B3综合应用题/B(总题数:1,分数:30.00)请完善程序(程序文件名:Java_3.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。
19、题目要求阅读 Java_3.java 程序,该程序的功能是判断用户以命令行方式输入的类名是否在 Java 类中。完成程序的编写,运行所得结果为:java.lang.Name 不在 Java 类库中。源程序:/程序的功能是,判断用户以命令行方式使用键盘输入的路径类名是否在 Java 类库中public class Java_3 public static void main(String args) String className;if(args.length0) className=args0;else className=“java.lang.Name“;U (1) /U Class e=
20、Class.forName(U (2) /U);System.out.println(className+“是 Java 类库中已有的类。“); catch(ClassNotFound U(3) /U e) System.out.println(className+“不在 Java 类库中。“);(分数:30.00)(1).(分数:10.00)填空项 1:_ (正确答案:try)解析:解析 由于后面的程序中有 catch 语句而没有 try,所以此处应填 try。填空项 1:_ (正确答案:className)解析:解析 其中用到了方法 public static Class forName(
21、String className) throws ClassNotFoundException 返回与带有给定字符串名的类或接口相关联的 Class 对象。如果找不到类则会抛出 ClassNotFoundException 异常。根据方法的说明可以看出这里是类名的字符串,而程序中又定义了类名变量 className,所以下画线处应该填变量名 className。填空项 1:_ (正确答案:Exception)解析:解析 其中用到了方法 public static Class forName(String className) throws ClassNotFoundException 返回与带有给定字符串名的类或接口相关联的 Class 对象。如果找不到类则会抛出 ClassNotFoundException 异常。根据方法的说明可以看出这里是类名的字符串,而程序中又定义了类名变量 className,所以下画线处应该填变量名 className。 程序解析 本程序通过命令行输入获取参数,看一个类是否在 Java 类库中,其中考查异常的处理。