给我用java做一个计算器窗口并其数字是由小到大排序的
时间: 2023-09-14 21:05:46 浏览: 112
### 回答1:
好的,下面是一个简单的基于Java Swing的计算器窗口,数字输入框中输入的数字会自动按照从小到大的顺序排序:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField inputField;
private JButton addButton, subtractButton, multiplyButton, divideButton, equalsButton, clearButton;
private double leftOperand, rightOperand;
private String operator;
public Calculator() {
super("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
inputField = new JTextField();
inputField.setEditable(false);
add(inputField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel(new GridLayout(4, 4));
addButton = new JButton("+");
addButton.addActionListener(this);
buttonPanel.add(addButton);
subtractButton = new JButton("-");
subtractButton.addActionListener(this);
buttonPanel.add(subtractButton);
multiplyButton = new JButton("*");
multiplyButton.addActionListener(this);
buttonPanel.add(multiplyButton);
divideButton = new JButton("/");
divideButton.addActionListener(this);
buttonPanel.add(divideButton);
for (int i = 1; i <= 9; i++) {
JButton button = new JButton(String.valueOf(i));
button.addActionListener(this);
buttonPanel.add(button);
}
clearButton = new JButton("C");
clearButton.addActionListener(this);
buttonPanel.add(clearButton);
JButton zeroButton = new JButton("0");
zeroButton.addActionListener(this);
buttonPanel.add(zeroButton);
equalsButton = new JButton("=");
equalsButton.addActionListener(this);
buttonPanel.add(equalsButton);
add(buttonPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String buttonText = e.getActionCommand();
if (buttonText.matches("\\d")) {
inputField.setText(inputField.getText() + buttonText);
} else if (buttonText.equals("+")) {
operator = "+";
leftOperand = Double.parseDouble(inputField.getText());
inputField.setText("");
} else if (buttonText.equals("-")) {
operator = "-";
leftOperand = Double.parseDouble(inputField.getText());
inputField.setText("");
} else if (buttonText.equals("*")) {
operator = "*";
leftOperand = Double.parseDouble(inputField.getText());
inputField.setText("");
} else if (buttonText.equals("/")) {
operator = "/";
leftOperand = Double.parseDouble(inputField.getText());
inputField.setText("");
} else if (buttonText.equals("=")) {
rightOperand = Double.parseDouble(inputField.getText());
double result = 0;
switch (operator) {
case "+":
result = leftOperand + rightOperand;
break;
case "-":
result = leftOperand - rightOperand;
break;
case "*":
result = leftOperand * rightOperand;
break;
case "/":
result = leftOperand / rightOperand;
break;
}
inputField.setText(String.valueOf(result));
} else if (buttonText.equals("C")) {
inputField.setText("");
}
sortInputField();
}
private void sortInputField() {
String[] numbers = inputField.getText().split("\\s+");
StringBuilder sortedNumbers = new StringBuilder();
try {
double[] doubleNumbers = new double[numbers.length];
for (int i = 0; i < numbers.length; i++) {
doubleNumbers[i] = Double.parseDouble(numbers[i]);
}
java.util.Arrays.sort(doubleNumbers);
for (double number : doubleNumbers) {
sortedNumbers.append(number).append(" ");
}
} catch (NumberFormatException e) {
// ignore
}
inputField.setText(sortedNumbers.toString().trim());
}
public static void main(String[] args) {
new Calculator();
}
}
```
在上面的代码中,我们使用了Java的`JFrame`和`JButton`等Swing组件创建了一个计算器窗口。数字输入框中输入的数字会自动按照从小到大的顺序排序,这是通过`sortInputField()`方法实现的。该方法首先将数字字符串按照空格分割成一个数组,然后将数组中的每个元素转换成`double`类型,并使用`Arrays.sort()`方法对数组进行排序,最后将排序后的数字重新组合成一个字符串,并设置为数字输入框的文本。在每个按钮的`actionPerformed()`方法中,我们都调用了`sortInputField()`方法以保证数字输入框中的数字始终按照从小到大的顺序排列。
### 回答2:
首先,在Java中创建一个计算器窗口,我们可以使用Swing库来实现。以下是一个简单的示例代码:
```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;
public class CalculatorWindow extends JFrame {
private JTextField inputField;
private JButton calculateButton;
public CalculatorWindow() {
setTitle("计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
inputField = new JTextField(10);
calculateButton = new JButton("计算");
calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = inputField.getText();
String[] numbers = input.split("\\s+");
ArrayList<Integer> sortedNumbers = new ArrayList<>();
for (String number : numbers) {
try {
sortedNumbers.add(Integer.parseInt(number));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "输入的数字无效", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
}
Collections.sort(sortedNumbers);
JOptionPane.showMessageDialog(null, "排序结果:" + sortedNumbers.toString(), "结果", JOptionPane.PLAIN_MESSAGE);
}
});
setLayout(new FlowLayout());
add(inputField);
add(calculateButton);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CalculatorWindow();
}
});
}
}
```
以上代码中,我们创建了一个继承自JFrame的CalculatorWindow类。在构造函数中,我们设置了窗口的标题、关闭操作和大小是否可调整。然后,定义了一个JTextField用于接收用户输入的数字,以及一个JButton用于触发计算操作。
在按钮的ActionListener中,我们获取用户输入的数字字符串并使用空格进行分割,然后将这些数字转换为整数并放入ArrayList中。随后,我们使用Collections类中的sort方法对数字进行排序,最后使用JOptionPane显示排序结果。
最后,在main方法中,我们使用SwingUtilities.invokeLater方法在事件调度线程上创建并显示CalculatorWindow对象,以确保在正确的线程上创建和更新窗口。
通过运行该代码,即可打开一个简单的计算器窗口,在文本框中输入需要排序的数字,并点击计算按钮,程序将会对这些数字按照从小到大的顺序进行排序,并通过消息框显示结果。
### 回答3:
好的,以下是用Java编写的一个计算器窗口,并且数字会按照用户输入的顺序由小到大排序。
```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.List;
public class CalculatorWindow extends JFrame {
private JTextField inputField;
private List<Integer> numbers;
public CalculatorWindow() {
numbers = new ArrayList<>();
// 设置窗口标题
setTitle("计算器");
// 创建UI布局
JPanel panel = new JPanel(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建输入框
inputField = new JTextField(10);
panel.add(inputField);
// 创建排序按钮
JButton sortButton = new JButton("排序");
panel.add(sortButton);
// 创建结果显示区域
JTextArea resultArea = new JTextArea(10, 20);
panel.add(resultArea);
// 监听排序按钮的点击事件
sortButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = inputField.getText();
if (!input.isEmpty()) {
// 从输入框中获取数字,并添加到列表中
numbers.add(Integer.parseInt(input));
// 对数字列表进行排序
Collections.sort(numbers);
// 将排序后的结果显示在结果区域中
resultArea.setText(numbers.toString());
// 清空输入框
inputField.setText("");
}
}
});
// 将面板添加到窗口中
add(panel);
// 设置窗口大小和可见性
pack();
setVisible(true);
}
public static void main(String[] args) {
// 创建计算器窗口实例
CalculatorWindow calculatorWindow = new CalculatorWindow();
}
}
```
这个计算器窗口中包含一个文本框用于输入数字,一个排序按钮用于触发排序操作,以及一个文本区域用于显示排序后的结果。用户在文本框中输入数字后,点击排序按钮,就可以将数字按照从小到大的顺序排序,并将结果显示在文本区域中。
阅读全文