定义IllegalScoreException异常类,代表分数相加后超出合理范围的异常。该异常是checked exception,即希望该异常一定要被捕获处理。 定义IllegalNameException异常类,代表名字设置不合理的异常。该异常是unchecked exception 定义Student类。
属性:
private String name; private int score;
方法:
toString //自动生成 setter/getter //自动生成 改造setName //如果姓名首字母为数字则抛出IllegalNameException public int addScore(int score) //如果加分后分数<0 或>100,则抛出IllegalScoreException,加分不成功。代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
while (in.hasNext()){
String s= in.nextLine();
if (s.equals("others")){
break;
}
else if (s.equals("new")){
try {
Student k=new Student();
String y=in.nextLine();
String[] x=y.split(" ");
if (x.length==2){
k.setName(x[0]);
int a=k.addScore(Integer.parseInt(x[1]));
if (k.getName()!=null&&a!=-1) System.out.println(k);
}
else System.out.println("java.util.NoSuchElementException");
}
catch (Exception e){
System.out.println(e);
}
}
}
System.out.println("scanner closed");
}
}
class Student {
private String name;
private int score;
public String getName() {
return name;
}
public void setName(String name) {
if ((int)name.charAt(0)<57&&(int)name.charAt(0)>48){
try {
throw new IllegalNameException(name);
}
catch (IllegalNameException e){
System.out.println(e);
}
}
else this.name = name;
}
public int addScore(int score){
if (score>100||score<0) {
try {
throw new IllegalScoreException(score);
} catch (IllegalScoreException e) {
System.out.println(e);
//e.printStackTrace();
}
return -1;
}
else this.score=score;
return this.score;
}
@Override
public String toString() {
return "Student [" + "name=" + name + ", score=" + score + ']';
}
}
class IllegalScoreException extends Exception{
private int score;
public IllegalScoreException(int s){
super("IllegalScoreException: score out of range, score=");
this.score=s;
}
@Override
public String toString() {
return this.getMessage()+score;
}
}
class IllegalNameException extends Exception{
private String s;
public IllegalNameException (String name){
super("IllegalNameException: the first char of name must not be digit, name=");
this.s=name;
}
@Override
public String toString() {
return this.getMessage()+this.s;
}
}



