第八次作业,成绩排序。
2017-12-05 11:39
232 查看
package zy;
import java.awt.FlowLayout;
import java.awt.Label;
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.JTextArea;
import javax.swing.JTextField;
/**
* 编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,
* 程序按成绩排序将这些学生的姓名和分数显示在一个文本区中
* @author Lenovo_PC
*
*/
public class aa {
public static void main(String[] args) {
MyJframe myJframe = new MyJframe();
}
}
class MyJframe extends JFrame implements ActionListener{
JFrame mJFrame;
JTextField mJTextField1;
JTextField 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 Label("姓名:"));
mBox.add(mJTextField1);
mBox.add(Box.createHorizontalStrut(50));
mBox.add(new Label("分数:"));
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) {
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);//保证一位小数的情况下比较的准确性
}
}
import java.awt.FlowLayout;
import java.awt.Label;
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.JTextArea;
import javax.swing.JTextField;
/**
* 编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,
* 程序按成绩排序将这些学生的姓名和分数显示在一个文本区中
* @author Lenovo_PC
*
*/
public class aa {
public static void main(String[] args) {
MyJframe myJframe = new MyJframe();
}
}
class MyJframe extends JFrame implements ActionListener{
JFrame mJFrame;
JTextField mJTextField1;
JTextField 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 Label("姓名:"));
mBox.add(mJTextField1);
mBox.add(Box.createHorizontalStrut(50));
mBox.add(new Label("分数:"));
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) {
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);//保证一位小数的情况下比较的准确性
}
}
相关文章推荐
- 汇编:输入姓名和成绩排序(别人的作业,自己随便写写的,没用传统的排序算法)
- Java作业-输入学生成绩并排序
- [数据结构]第八次作业:快速排序
- 第十周作业——成绩排序
- 数据可视化作业一: 快速排序加返回第n个最大的值
- 成绩排序
- 结构体案例之学生成绩输入及排序
- C语言程序设计第八次作业
- 冒泡排序:对成绩从低到高进行排序(JAVA)
- 1061成绩排序(c中qsort,strcmp函数的使用)
- 第八次作业
- 成绩排序
- 题目1061:成绩排序
- 单链表实现学生成绩从高到低排序(C语言)
- 第八次作业
- 排序课堂测试及排序课下作业
- 数组素数排序(作业)
- 第八次作业(2018-03-28,周三)
- 带姓名的成绩排序
- 泛式——学生成绩排序