一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
m=d;
d=m;
d=(Dog)m;
d=c;
c=(Cat)m;
d=m;和d=c;引起编译错误;
原因:
类型不匹配:不能从Mammal转换为Dog
类型不匹配:不能从Cat转换为Dog
二.CatchWho.java
三.CatchWho2.java
结果:ArrayIndexOutOfBoundsException/外层try-catch
四.EmbededFinally.java
public class EmbededFinally {
public static void main(String args[]) {
int result;
try {
System.out.println("in Level 1");
try {
System.out.println("in Level 2");
// result=100/0; //Level 2
try {
System.out.println("in Level 3");
result=100/0; //Level 3
}
catch (Exception e) {
System.out.println("Level 3:" + e.getClass().toString());
}
finally {
System.out.println("In Level 3 finally");
}
// result=100/0; //Level 2
}
catch (Exception e) {
System.out.println("Level 2:" + e.getClass().toString());
}
finally {
System.out.println("In Level 2 finally");
}
// result = 100 / 0; //level 1
}
catch (Exception e) {
System.out.println("Level 1:" + e.getClass().toString());
}
finally {
. System.out.println("In Level 1 finally");
}
}
}
结果:
in Level 1
in Level 2
in Level 3
Level 3:class java.lang.ArithmeticException
In Level 3 finally
In Level 2 finally
In Level 1 finally
五.课后作业
import java.util.Scanner;
public class Scorelevel {
public static void main(String[] args) {
System.out.println("请输入学生的成绩:");
Scanner sc = new Scanner(System.in);
String ss = sc.next(); //将数据以String类型的方式读入
if(isInt(ss)==false) {
System.exit(0);
}
else {
int score = Integer.valueOf(ss);
if(score<0||score>100) {
System.out.println("您输入的数据不合法,请重新输入:");
}
else if(score>=0&&score<60) {
System.out.println("成绩等级为不及格");
}
else if(score>=60&&score<70) {
System.out.println("成绩等级为及格");
}
else if(score>=70&&score<80) {
System.out.println("成绩等级为中等");
}
else if(score>=80&&score<90) {
System.out.println("成绩等级为良好");
}
else {
System.out.println("成绩等级为优秀");
}
sc.close();
}
}
public static boolean isInt(String ss) {
Integer it = null;
try {
it = Integer.valueOf(ss);
} catch (NumberFormatException e) {
System.out.println("您输入的数据不合法,请重新输入:");
return false;
}
return true;
}
}