博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用java分别输入学生姓名时_Java集合框架上机练习题:用户分别从两个文本框输入学生的姓名和分数.............
阅读量:5323 次
发布时间:2019-06-14

本文共 2608 字,大约阅读时间需要 8 分钟。

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

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 list = new ArrayList();

@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 iterator = list.iterator();

Student student;

while (iterator.hasNext()) {

student = iterator.next();

mJTextArea.append("name:"+student.name+" grade:"+student.grade+"\n");

}

}

}

class Student implements Comparable{

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();//显示窗口

}

}

20180111010342049428.png

转载地址:http://vphhv.baihongyu.com/

你可能感兴趣的文章
正则表达式
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
加固linux
查看>>
10.17动手动脑
查看>>
WPF中Image显示本地图片
查看>>
Java多线程基础(一)
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
[poj1006]Biorhythms
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>