一、上机目的
1.熟练掌握控制台程序设计及执行方法。
2.掌握异常处理的方法及使用。
3.了解JAVA集合类框架的结构。
4.掌握类List、ArraryList、HashMap、HashSet等常用类的使用方法。
二、上机内容
1、对上机4中的Circle类,修改圆的半径的输入方式为从键盘上输入,为防止输入负数,请通过throws和throw设计出一旦出现负数时的异常处理方法,并通过本题的测试类进行测试。
NumException类:
public class NumException extends Exception{
public NumException() {
}
public NumException(String message) {
super(message);
}
}
Shape类:
public interface Shape {
double getArea();
double getPerimeter();
}
Circle类:
public class Circle implements Shape{
private double radius;
public Circle() {
}
public Circle(double radius) throws NumException{
if(radius <0) {
throw new NumException("圆的半径不能小于0");
}
this.radius=radius;
}
public void setRadius(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return getRadius()*getRadius()*Math.PI;
}
public double getPerimeter() {
return 2*getArea()*Math.PI;
}
public String toString() {
return "radius="+radius+",area="+getArea()+",perimeter="+getPerimeter();
}
}
CircleTest类:
import java.util.Scanner;
public class CircleTest {
public static void main(String[] args) {
System.out.println("请输入一个半径值:");
Scanner in=new Scanner(System.in);
int radius=in.nextInt();
try {
Circle c1=new Circle(radius);
System.out.println(c1.toString());
} catch (NumException e) {
e.printStackTrace();
}
}
}
2、对例题11.8中的book类,创建10个相应的对象,分别用LinkedList、ArrayList、HashSet、HashMap类的对象来存储这10个对象,遍历输出所有对象。
3、修改题2中的Book类实现Comparable接口,该接口中对isbn进行排序,创建5个相应的对象,用TreeSet类的对象来存储这5个对象,输出存储的这5个对象(排序后)。
结合2、3两点的代码如下:
import java.util.*; public class Book implements Comparable{ private String isbn; private String title; private String author; private final static Book[] books = generateData(); public static Book[] generateData () { Book[] books = new Book[10]; for (int i = 0; i < 10; i++) { Book book = new Book(i + 1 + "", "书本" + i, "lwy"); books[i] = book; } return books; } public static void linkedList() { List bookLinkedList = new LinkedList<>(); for (int i = 0; i < books.length; i++) { bookLinkedList.add(books[i]); } bookLinkedList.stream().forEach(System.out::println); } public static void arrayList() { List bookArrayList = new ArrayList<>(); for (int i = 0; i < books.length; i++) { bookArrayList.add(books[i]); } bookArrayList.stream().forEach(System.out::println); } public static void hashSet() { Set bookHashSet = new HashSet<>(); for (int i = 0; i < books.length; i++) { bookHashSet.add(books[i]); } bookHashSet.stream().forEach(System.out::println); } public static void hasMap() { Map bookHashMap = new HashMap<>(); for (int i = 0; i < books.length; i++) { bookHashMap.put(books[i].isbn,books[i]); } for (String key : bookHashMap.keySet()) { System.out.println(bookHashMap.get(key)); } } public static void treeSet() { TreeSet treeSet = new TreeSet(); for (int i = 0; i < books.length; i++) { treeSet.add(books[i]); } treeSet.stream().forEach(System.out::println); } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Book(String isbn, String title, String author) { this.isbn = isbn; this.title = title; this.author = author; } @Override public String toString() { return "Book{" + "isbn='" + isbn + ''' + ", title='" + title + ''' + ", author='" + author + ''' + '}'; } @Override public int compareTo(Book o) { return this.isbn.compareTo(o.isbn); } public static void main(String[] args) { System.out.println("linkedList"); linkedList(); System.out.println("hashSet"); arrayList(); hashSet(); System.out.println("hasMap"); hasMap(); System.out.println("treeSet"); treeSet(); } }
4、创建MyComparatorForName类实现Comparator接口,该类中对Book类对象中的isbn进行排序,创建5个相应的对象,用TreeSet的对象来存储这5个对象,输出存储的这5个对象(排序后)。
import java.util.Comparator; import java.util.Random; import java.util.TreeSet; public class MyComparatorForName implements Comparator{ @Override public int compare(Book o1, Book o2) { return o1.getIsbn().compareTo(o2.getIsbn()); } public static void main(String[] args) { TreeSet treeSet = new TreeSet(new MyComparatorForName()); Random random = new Random(); for (int i = 0; i < 5; i++) { Book book = new Book(random.nextInt(100) + "", "书本" + i, "lwy"); treeSet.add(book); } treeSet.stream().forEach(System.out::println); } }



