Java面向对象实验 6 ——控制台程序设计(集合类)

一、上机目的

  1.熟练掌握控制台程序设计及执行方法。

  2.掌握异常处理的方法及使用。

        3.了解JAVA集合类框架的结构。

        4.掌握类List、ArraryList、HashMap、HashSet等常用类的使用方法。

二、上机内容

我比较喜欢将多个class 写在一个类里,不习惯的可以自己另外创建class类

1、对上机4中的Circle类,修改圆的半径的输入方式为从键盘上输入,为防止输入负数,请通过throws和throw设计出一旦出现负数时的异常处理方法,并通过本题的测试类进行测试。

package OOP.work.Test6.T1;

import java.util.Scanner;

//NumException继承异常类
public class NumException extends Exception{
    public NumException() {

    }

    public NumException(String message){
        super(message);
    }
}

//Shape 类
interface Shape{
    double getArea();
    double getPerimeter();

}

//Circle 类
class Circle implements Shape{
    private double radius;
    public Circle(){

    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    @Override
    public double getArea() {
        return getRadius()*getRadius()*Math.PI;
    }

    @Override
    public double getPerimeter() {
        return 2*getRadius()*Math.PI;
    }

    @Override
    public String toString() {
        return "Circle{" +
                "radius=" + radius +
                '}';
    }
}

//Test 类
class CircleTest{
    static  void method() throws NumException{
        System.out.println("输出圆的半径:");
        Scanner scanner=new Scanner(System.in);
        float r1=scanner.nextFloat();
        if(r1 < 0){
            throw new NumException("圆的半径不能小于0");
        }else {
            System.out.println("周长为:"+2*r1*Math.PI);
            System.out.println("面积为:"+r1*r1*Math.PI);
        }

    }

    public static void main(String[] args) {
        try{
            method();
        }catch (NumException e){
            e.printStackTrace();
        }
    }

}

Java面向对象实验 6 ——控制台程序设计(集合类)_第1张图片

Java面向对象实验 6 ——控制台程序设计(集合类)_第2张图片

  2、对例题11.8中的book类,创建10个相应的对象,分别用LinkedList、ArrayList、HashSet、HashMap类的对象来存储这10个对象,遍历输出所有对象。

3、修改题2中的Book类实现Comparable接口,该接口中对isbn进行排序,创建5个相应的对象,用TreeSet类的对象来存储这5个对象,输出存储的这5个对象(排序后)。

package OOP.work.Test6.T2;

import java.io.Serializable;
import java.util.*;

public class Book implements Serializable {
    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 + "", "Java面向对象" + i, "孙连英");
            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();
    }
}

Java面向对象实验 6 ——控制台程序设计(集合类)_第3张图片

Java面向对象实验 6 ——控制台程序设计(集合类)_第4张图片

Java面向对象实验 6 ——控制台程序设计(集合类)_第5张图片

4、创建MyComparatorForName类实现Comparator接口,该类中对Book类对象中的isbn进行排序,创建5个相应的对象,用TreeSet的对象来存储这5个对象,输出存储的这5个对象(排序后)。

package OOP.work.Test6.T4;

import OOP.work.Test6.T2.Book;

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) + "", "Java面向对象" + i, "孙连英");
            treeSet.add(book);
        }
        treeSet.stream().forEach(System.out::println);
    }
}

Java面向对象实验 6 ——控制台程序设计(集合类)_第6张图片

这个实验,自己不是很会,所以主要还是借鉴了一下别的大神的。

实验6 控制台程序设计(集合类)_1uuue的博客-CSDN博客

你可能感兴趣的:(#,java面向对象,java,开发语言)