11.29第十四周Java作業

1、編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法中規定兩個Book類實例的大小關係爲二者的price屬性的大小關係。在主函數中,選擇合適的集合類型存放Book類的若干個對象,然後創建一個新的Book類的對象,並檢查該對象與集合中的哪些對象相等。

import java.util.*;
public class Book implements Comparable<Book>{
    private String name;
    private double price;
    public Book(String name, double price) {
        super();
        this.name = name;
        this.price = price;
    }
    public String getName(){
        return name;
    }
    public double getPrice(){
        return price;
    }
    public int compareTo(Book o) {
        if(this.price==o.price){
            return 1;
        }else return 0;
    }
    public static void main(String[] args) {
        LinkedList<Book> list=new LinkedList<Book>();
        Book b1=new Book("c語言",56.5);
        Book b2=new Book("JAVA基礎教程",29.90);
        Book b3=new Book("C++基礎教程", 29.90);
        Book b4=new Book("數據庫技術", 29.90);
        list.add(b1);
        list.add(b2);
        list.add(b3);
        list.add(b4);
        Book b5=new Book("模式識別", 29.90);
        System.out.println("新書"+b5.getName()+"與下列圖書:");
        Iterator<Book> it=list.iterator();  
        while(it.hasNext()) {  
            Book b=it.next();  
            if(b.compareTo(b5)==1)  
                System.out.println(b.name);  
        }  
        System.out.println("價格相同,具體價格爲:"+b5.price);  
    }
}
調試結果:



2、編寫一個應用程序,用戶分別從兩個文本框輸入學術的姓名和分數,程序按成績排序將這些學生的姓名和分數顯示在一個文本區中。

import javax.swing.*;
import java.util.*;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class SortByGrade implements Comparator{
    public int compare(Object o1, Object o2) {
    	Stuent s1=(Stuent)o1;
    	Stuent s2=(Stuent)o2;
        if(s1.getGrade()<=s2.getGrade())
        	return 1;
        else 
        	return -1;
    }
}
class Stuent{
    String name;
    double grade;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getGrade() {
        return grade;
    }
    public void setGrade(double grade) {
        this.grade = grade;
    }
}
public class Sort extends JFrame implements ActionListener{
    Box box1;
    JTextField j1=new JTextField(10);
    JTextField j2=new JTextField(10);
    JButton button=new JButton("提交");
    Container container=getContentPane();
    JTextArea jTextArea=new JTextArea();
    JPanel jPanel1=new JPanel();
    ArrayList<Stuent> list=new ArrayList<Stuent>();
    Sort() {
        box1=Box.createHorizontalBox();
        box1.add(new Label("姓名:"));
        box1.add(j1);
        box1.add(Box.createHorizontalStrut(8));
        box1.add(new Label("分數"));
        box1.add(j2);
        box1.add(button);
        jPanel1.add(box1);
        jPanel1.setLayout(new FlowLayout());
        container.add(jPanel1,BorderLayout.NORTH);
        JScrollPane jScrollPane=new JScrollPane(jTextArea);
        add(jScrollPane);
        container.add(jScrollPane, BorderLayout.CENTER);
        setTitle("窗口");
        setSize(500,400);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){
        String name=j1.getText().toString();
        double grade=Double.parseDouble(j2.getText());
        Stuent s=new Stuent();
        s.setName(name);
        s.setGrade(grade);
        list.add(s);
        Collections.sort(list, new SortByGrade());
        jTextArea.setText(null);
        for (Stuent stu : list) {
            jTextArea.append(stu.getName()+"  "+stu.getGrade()+"\n");
        }
    }
    public static void main(String[] args) {
        new Sort();
    }
}
調試結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章