7.课后习题
1.自定义异常类AgeException、NameException。当创建学生类对象时,要求年龄范围0-150,姓名2-4个长度,如果不在范围之内,则抛出异常。
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) throws NameException {
int i = name.length();
if (i>4 || i<2){
throw new NameException("名字不合理");
}else{
this.name = name;
}
}
public int getAge() {
return age;
}
public void setAge(int age) throws AgeException {
if (age>150 || age<0){
throw new AgeException("年龄不合理");
}else{
this.age=age;
}
}
public Student(String name, int age){
try {
setName(name);
} catch (NameException e) {
e.printStackTrace();
}
try {
setAge(age);
} catch (AgeException e) {
e.printStackTrace();
}
}
public Student() {
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class NameException extends Exception {
public NameException() {
}
public NameException(String message) {
super(message);
}
}
public class AgeException extends Exception {
public AgeException() {
}
public AgeException(String message, Throwable cause) {
super(message, cause);
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new Student("张三丰", 15);
System.out.println(stu1);
Student stu2 = new Student("张三丰三丰", 156);
System.out.println(stu2);
}
}
============================
com.liang.Test.Exception.NameException: 名字不合理
Student{name='张三丰', age=15}
Student{name='null', age=0}
at com.liang.Test.Exception.Student.setName(Student.java:18)
at com.liang.Test.Exception.Student.<init>(Student.java:36)
at com.liang.Test.Exception.Test.main(Test.java:14)
com.liang.Exception01.AgeException: 年龄不合理
at com.liang.Test.Exception.Student.setAge(Student.java:28)
at com.liang.Test.Exception.Student.<init>(Student.java:41)
at com.liang.Test.Exception.Test.main(Test.java:14)
2.递归实现获取目录下所有的文件和目录的绝对路径。
public class Test {
public static void main(String[] args) {
File file = new File("./H");
getAllFile(file);
}
private static void getAllFile(File file) {
//获取当前目录中的所有File类型的文件
File[] files = file.listFiles();
//判断目录是否为空
if (null != files){
//遍历当前目录中目录和文件
for (File f : files) {
//判断如果是目录,递归自己调用自己
if (f.isDirectory()){
//获取目录和文件的绝对路径
System.out.println(f.getAbsolutePath());
getAllFile(f);
}else{
System.out.println(f.getAbsolutePath());
}
}
}
}
}
============================
E:\Java培训课程\.\H\A
E:\Java培训课程\.\H\A\S
E:\Java培训课程\.\H\A\S\D
E:\Java培训课程\.\H\A\S\D\d.txt
E:\Java培训课程\.\H\A\S\D\F
E:\Java培训课程\.\H\A\S\D\F\f.txt
E:\Java培训课程\.\H\A\S\D\F\G
E:\Java培训课程\.\H\A\S\D\F\G\G.TXT
E:\Java培训课程\.\H\A\S\s.txt
java进阶基础—2.2----上一章节: 跳转