java编程,java 弹出窗口输入多个分数,用逗号隔开,用Comparable<T>接口或Comparator<T>接口比较分数大小,通过单选框选择是从小到大排列还是从大到小排列,输出排列结果
时间: 2024-02-28 11:54:39 浏览: 65
好的,这里给出一个使用 `Comparable` 和 `Comparator` 接口的示例代码,可以实现您的要求:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ScoreSorter extends JFrame implements ActionListener {
JTextField scoreField;
JRadioButton ascBtn, descBtn;
JButton sortBtn;
public ScoreSorter() {
initUI();
}
private void initUI() {
setTitle("Score Sorter");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 150);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1));
JPanel scorePanel = new JPanel();
JLabel scoreLabel = new JLabel("Scores:");
scoreField = new JTextField(20);
scorePanel.add(scoreLabel);
scorePanel.add(scoreField);
JPanel orderPanel = new JPanel();
JLabel orderLabel = new JLabel("Order:");
ascBtn = new JRadioButton("Ascending");
descBtn = new JRadioButton("Descending");
ButtonGroup group = new ButtonGroup();
group.add(ascBtn);
group.add(descBtn);
orderPanel.add(orderLabel);
orderPanel.add(ascBtn);
orderPanel.add(descBtn);
JPanel buttonPanel = new JPanel();
sortBtn = new JButton("Sort");
sortBtn.addActionListener(this);
buttonPanel.add(sortBtn);
panel.add(scorePanel);
panel.add(orderPanel);
panel.add(buttonPanel);
add(panel);
setVisible(true);
}
public static void main(String[] args) {
new ScoreSorter();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == sortBtn) {
String[] scores = scoreField.getText().split(",");
List<Integer> intScores = new ArrayList<>();
for (String score : scores) {
intScores.add(Integer.parseInt(score.trim()));
}
if (ascBtn.isSelected()) {
Collections.sort(intScores);
} else {
Collections.sort(intScores, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
}
JOptionPane.showMessageDialog(this, intScores.toString());
}
}
}
```
这个程序同样使用了 Swing 组件来构建 GUI,可以通过文本框输入多个分数,然后通过单选按钮选择是从小到大排列还是从大到小排列,最后点击按钮可以输出排列结果。在程序中,我们使用了 `Comparable` 和 `Comparator` 接口来比较分数大小,如果选择了从大到小排列,那么我们需要使用一个自定义的 `Comparator` 对象来实现排序。在这个示例中,我们使用了匿名内部类来创建 `Comparator` 对象,实现了 `compare()` 方法,该方法将会按照从大到小的顺序来比较分数大小。最终,我们将排序结果用 `JOptionPane` 显示出来。
阅读全文