第十四周作业:Java集合框架上机练习题

Java集合框架上机练习题

1 编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。查询结果如下图:


package key;
import java.util.ArrayList;  
import java.util.Iterator; 

class books implements Comparable{  
    String name;  
    double price;  
    public books(String name,double price){  
        this.name=name;  
        this.price=price;  
    }  
    public int compareTo(Object obj) {  
    	books book=(books)obj;  
        if(book.price == this.price)
            return 1;  
        else   
            return 0;  
    }  
} 
public class book {  
    public double price;

	public static void main(String[] args){  
        ArrayList<books> List=new ArrayList<books>();  
        books bk1=new books("java基础教程",29);         
        books bk2=new books("C++基础教程",29);  
        books bk3=new books("数据库技术",29);  
        List.add(bk1);  
        List.add(bk2);  
        List.add(bk3);  
        books book0=new books("模式识别",29);  
        System.out.println("新书:《"+book0.name+"》与下列图书:");  
          
        Iterator<books> it=List.iterator();  
        while(it.hasNext()){  //下一个元素是否存在  
            books book=it.next();  //读取下一个元素  
            if(book.compareTo(book0)==1)  
                System.out.println("\t"+book.name);  
        }  
        System.out.println("价格相同,具体价格为:"+book0.price);  
    }  
}  



2 编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。

程序运行效果如图:



import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;  
 
@SuppressWarnings("serial")
public class window extends JFrame{  
     	//定义基础模块  
        JLabel lab1 =new JLabel("姓名:");
        TextField text1 = new TextField(8);
        JLabel lab2=new JLabel("成绩:");  
        TextField text2 = new TextField(8);  
        JButton button = new JButton("确定");
        JTextArea textArea = new JTextArea(50,10);  
        //定义构造函数
        window(){  
            super("学生成绩排序");   
            Container contentPane=getContentPane();  
            
            Box box1=Box.createHorizontalBox(); 
            box1.add(lab1);  
            box1.add(text1); 
               
            Box box2=Box.createHorizontalBox();   
            box2.add(lab2);  
            box2.add(text2);
            
            Box box3=Box.createHorizontalBox();
            box3.add(button);
            //定义面板  
            JPanel panel1 =new JPanel();  
            panel1.add(box1);  
            panel1.add(box2);  
            panel1.add(box3);
            contentPane.add(panel1,BorderLayout.NORTH);  
            //设置数据展示框   
            JTextArea textArea =new JTextArea();  
            contentPane.add(textArea,BorderLayout.CENTER); 
            
            //点击事件
            button.addActionListener(new ActionListener() {
			@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					textArea.append("姓名:"+text1.getText()+"  "+"成绩:"+text2.getText()+"\n");
				}
            }
            );
            
        //设置窗口  
        setBounds(200, 100, 600, 500);  
        setVisible(true);  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        }   
        
        public static void main(String[] args) {  
            // TODO Auto-generated method stub  
                    @SuppressWarnings("unused")
					Window win =new window();  
            }  
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值