Java集合框架上机练习题:用户分别从两个文本框输入学生的姓名和分数.............
編寫一個應用程序,用戶分別從兩個文本框輸入學生的姓名和分數,程序按成績排序將這些學生的姓名和分數顯示在一個文本區中。
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MyJframe extends JFrame implements ActionListener {
JFrame mJFrame;
JTextField mJTextField1, mJTextField2;
JTextArea mJTextArea;
MyJframe(){
mJFrame = new JFrame("成績排序");
mJFrame.setBounds(200, 100, 900, 600);//設置窗口位置及窗口的寬高
mJFrame.setLayout(new FlowLayout());//設置窗口的布局
mJTextField1 = new JTextField(10);//顯式創建兩個文本框
mJTextField2 = new JTextField(10);
JButton mJButton = new JButton("確定");//創建按鈕
Box mBox = Box.createHorizontalBox();//創建橫向盒容器
mBox.add(new JLabel("姓名"));//添加隱式創建的標簽,因為不需要點擊事件所以隱式創建即可
mBox.add(mJTextField1);//所有add均為向父容器中添加
mBox.add(Box.createHorizontalStrut(50));//設置橫向的間隔
mBox.add(new JLabel("分數"));
mBox.add(mJTextField2);
mBox.add(Box.createHorizontalStrut(50));
mBox.add(mJButton);
mJFrame.add(mBox);
mJTextArea = new JTextArea(40,80);//創建文本區域,用來顯示輸出,所以必須顯式創建
mJTextArea.setText("自己在上邊寫數據,點插入\n");
mJFrame.add(mJTextArea);
mJFrame.setVisible(true);//使窗口顯式出來
mJButton.addActionListener(this);
}
List<Student> list = new ArrayList<Student>();
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
/*
* 因為只有button有點擊事件,所以直接可以不用判斷,若有多個控件綁定了事件則需要判斷
* 這里直接判斷文本框是否為空
*/
mJTextArea.setText("");
String name = mJTextField1.getText().trim();
String grade = mJTextField2.getText().trim();
if(!"".equals(name) && !"".equals(grade)){
try {
list.add(new Student(name, Float.parseFloat(grade)));
mJTextArea.append("當前插入的信息為:姓名:"+name+" 成績:"+grade+"\n");
} catch (NumberFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
mJTextArea.append("不知道成績是數字格式嗎,重新輸入!\n");
}
}
Collections.sort(list);//對list排序
Iterator<Student> iterator = list.iterator();
Student student;
while (iterator.hasNext()) {
student = iterator.next();
mJTextArea.append("name:"+student.name+" grade:"+student.grade+"\n");
}
}
}
class Student implements Comparable<Student>{
String name;
float grade;
public Student(String name, float grade) {
super();
this.name = name;
this.grade = grade;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return (int) (o.grade*10 - this.grade*10);//保證一位小數的情況下比較的準確性
}
}
public class test1 {
public static void main(String[] args) {
// TODO 自動生成的方法存根
MyJframe myJframe = new MyJframe();//顯示窗口
}
}
?
?
轉載于:https://www.cnblogs.com/lyly01/p/8004717.html
總結
以上是生活随笔為你收集整理的Java集合框架上机练习题:用户分别从两个文本框输入学生的姓名和分数.............的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCIe学习笔记(15)--- TLP的
- 下一篇: Lodop 打印控件