实验6 控制台程序设计(集合类)

一、上机目的

  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<Book> {
    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<Book> 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<Book> 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<Book> 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<String,Book> 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<Book> 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<Book> {
    @Override
    public int compare(Book o1, Book o2) {
        return o1.getIsbn().compareTo(o2.getIsbn());
    }

    public static void main(String[] args) {
        TreeSet<Book> 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);
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值