欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java用ATW和Swing做計(jì)算器

錢艷冰1年前8瀏覽0評論

Java是一種廣泛使用的編程語言,在Web開發(fā)中有著廣泛的應(yīng)用。在下面的示例中,我們將使用Java中的ATW和Swing來創(chuàng)建一個簡單的計(jì)算器。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField textField;
private JButton button;
private JPanel panel;
public Calculator() {
textField = new JTextField(10);
button = new JButton("OK");
panel = new JPanel();
panel.add(textField);
panel.add(button);
button.addActionListener(this);
add(panel);
setTitle("Calculator");
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
String input = textField.getText();
int result = evaluate(input);
JOptionPane.showMessageDialog(null, "The result is " + result);
}
public static int evaluate(String expression) {
char[] tokens = expression.toCharArray();
Stackvalues = new Stack();
Stackops = new Stack();
for (int i = 0; i< tokens.length; i++) {
if (tokens[i] == ' ')
continue;
if (tokens[i] >= '0' && tokens[i]<= '9') {
StringBuffer sbuf = new StringBuffer();
while (i< tokens.length && tokens[i] >= '0' && tokens[i]<= '9')
sbuf.append(tokens[i++]);
values.push(Integer.parseInt(sbuf.toString()));
} else if (tokens[i] == '(') {
ops.push(tokens[i]);
} else if (tokens[i] == ')') {
while (ops.peek() != '(')
values.push(applyOp(ops.pop(), values.pop(), values.pop()));
ops.pop();
} else if (tokens[i] == '+' || tokens[i] == '-' || tokens[i] == '*' || tokens[i] == '/') {
while (!ops.empty() && hasPrecedence(tokens[i], ops.peek()))
values.push(applyOp(ops.pop(), values.pop(), values.pop()));
ops.push(tokens[i]);
}
}
while (!ops.empty())
values.push(applyOp(ops.pop(), values.pop(), values.pop()));
return values.pop();
}
public static boolean hasPrecedence(char op1, char op2) {
if (op2 == '(' || op2 == ')')
return false;
if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-'))
return false;
else
return true;
}
public static int applyOp(char op, int b, int a) {
switch (op) {
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
if (b == 0)
throw new UnsupportedOperationException("Cannot divide by zero");
return a / b;
}
return 0;
}
public static void main(String[] args) {
new Calculator();
}
}

我們使用JTextField和JButton來創(chuàng)建GUI,并添加了一個ActionListener來捕捉按鈕點(diǎn)擊事件并顯示計(jì)算結(jié)果。evaluate(String expression)方法使用一個棧來評估表達(dá)式。它接受包含算術(shù)表達(dá)式的字符串,并返回計(jì)算結(jié)果。

在這個示例中,我們演示了如何使用Java的ATW和Swing來創(chuàng)建一個簡單的計(jì)算器。您可以使用這個示例作為起點(diǎn),構(gòu)建更復(fù)雜的計(jì)算器,并探索Java的其他功能。