java编程,java 弹出窗口输入多个用逗号隔开的分数,用Comparable<T>接口或Comparator<T>接口比较分数大小,通过单选框选择是从小到大排列还是从大到小排列,从另一个框输出排列结果
时间: 2024-02-28 20:54:47 浏览: 66
对比Java中的Comparable排序接口和Comparator比较器接口
好的,我会尽力回答你的问题。
首先,我们需要创建一个 Java 程序,可以弹出窗口输入多个用逗号隔开的分数,并且可以根据用户选择的方式进行排序。下面是一个示例程序:
```java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class ScoreSorter extends JFrame implements ActionListener {
private JTextField textField;
private JRadioButton ascendingButton;
private JRadioButton descendingButton;
private JTextArea textArea;
public ScoreSorter() {
setTitle("Score Sorter");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建文本框和标签
JLabel label = new JLabel("Enter scores separated by commas:");
textField = new JTextField(20);
// 创建单选按钮
ascendingButton = new JRadioButton("Ascending");
descendingButton = new JRadioButton("Descending");
ButtonGroup group = new ButtonGroup();
group.add(ascendingButton);
group.add(descendingButton);
// 创建排序按钮
JButton sortButton = new JButton("Sort");
sortButton.addActionListener(this);
// 创建文本区域
textArea = new JTextArea(10, 20);
textArea.setEditable(false);
// 将组件添加到窗口中
JPanel panel = new JPanel(new GridLayout(4, 1));
panel.add(label);
panel.add(textField);
panel.add(ascendingButton);
panel.add(descendingButton);
panel.add(sortButton);
Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(new JScrollPane(textArea), BorderLayout.CENTER);
// 设置窗口大小并显示
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// 获取用户输入的分数并进行排序
String input = textField.getText();
String[] scoreStrings = input.split(",");
int[] scores = new int[scoreStrings.length];
for (int i = 0; i < scoreStrings.length; i++) {
scores[i] = Integer.parseInt(scoreStrings[i]);
}
if (ascendingButton.isSelected()) {
Arrays.sort(scores);
} else {
Arrays.sort(scores, Collections.reverseOrder());
}
// 将排序结果输出到文本区域
textArea.setText("");
for (int score : scores) {
textArea.append(score + "\n");
}
}
public static void main(String[] args) {
new ScoreSorter();
}
}
```
在这个程序中,我们创建了一个 `ScoreSorter` 类,继承自 `JFrame` 类,并实现了 `ActionListener` 接口。在 `ScoreSorter` 类的构造函数中,我们创建了一个窗口,并添加了一个文本框、两个单选按钮、一个排序按钮和一个文本区域。在 `actionPerformed` 方法中,我们获取用户输入的分数,并根据用户选择的方式进行排序,然后将排序结果输出到文本区域。
在这个程序中,我们使用了 `Arrays.sort` 方法进行数组排序,并使用了 `Collections.reverseOrder` 方法获取一个逆序比较器。如果用户选择了从小到大排序,我们直接调用 `Arrays.sort` 方法;如果用户选择了从大到小排序,我们使用逆序比较器作为第二个参数调用 `Arrays.sort` 方法。
希望这个示例程序能够帮助到你!
阅读全文