public class SimpleCalculator {
public static void main(String[] args) {
int first =0 //第一个数
int second = 0 //第二个数
int result = 0
char opt = 0 //运算符
Scanner scanner = new Scanner(System.in)
System.out.println("请输入第一个数:")
first = Integer.parseInt(scanner.nextLine())
System.out.println("请输入第二个数:")
second = Integer.parseInt(scanner.nextLine())
System.out.println("请输入运算符(+,-,*,/):")
String t = scanner.nextLine()
opt = t.charAt(0)
while(opt != '+' && opt != '-' && opt != '*' && opt != '/'){
System.out.print("输入错误,请重新输入运算符(+,-,*,/):")
opt = scanner.nextLine().charAt(0)
}
switch(opt){
case '+':
result = first + second
break
case '-':
result = first - second
break
case '*':
result = first * second
break
case '/':
result = first / second
break
default:
break
}
System.out.println("结果:"+first + opt + second + " = " + result)
}
}
import java.awt.*import java.awt.event.*
import javax.swing.*
import javax.swing.border.*
import java.util.LinkedList //工具包
import java.text.NumberFormat //文本包
/**
* java swing计算器
* @author young
*
*/
public class Calculator extends Frame implements ActionListener // 计算器类
{
JTextField result
NumberButton numberButton[]
OperatorButton operatorButton[]
Button radixpoint, positiveminus, backspace, reciprocal, equal, clear // 声明成员变量
// 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮
Panel panel
String operator[] = { "+", "-", "*", "/" }
LinkedList linklist
boolean pressequal = false
public Calculator() // 构造方法
{
super("计算器")
linklist = new LinkedList()
numberButton = new NumberButton[10]
for (int i = 0 i <= 9 i++) {
numberButton[i] = new NumberButton(i)
numberButton[i].addActionListener(this)
}
operatorButton = new OperatorButton[4]
for (int i = 0 i < 4 i++) {
operatorButton[i] = new OperatorButton(operator[i])
operatorButton[i].addActionListener(this)
}
radixpoint = new Button(".")
positiveminus = new Button("+/-")
backspace = new Button("CE")
reciprocal = new Button("1/x")
equal = new Button("=")
clear = new Button("C")
radixpoint.setForeground(Color.red)
positiveminus.setForeground(Color.red)
backspace.setForeground(Color.red)
reciprocal.setForeground(Color.red)
equal.setForeground(Color.red)
clear.setForeground(Color.red)
radixpoint.addActionListener(this)
positiveminus.addActionListener(this)
backspace.addActionListener(this)
reciprocal.addActionListener(this)
equal.addActionListener(this)
clear.addActionListener(this)
result = new JTextField(10)
result.setHorizontalAlignment(JTextField.RIGHT)
result.setForeground(Color.black)
result.setBackground(Color.white)
result.setFont(new Font("TimesRoman", Font.PLAIN, 14))
result.setBorder(new SoftBevelBorder(BevelBorder.LOWERED))
result.setEditable(false)
panel = new Panel()
panel.setLayout(new GridLayout(4, 5))
panel.add(numberButton[1])
panel.add(numberButton[2])
panel.add(numberButton[3])
panel.add(backspace)
panel.add(clear)
panel.add(numberButton[4])
panel.add(numberButton[5])
panel.add(numberButton[6])
panel.add(operatorButton[0])
panel.add(operatorButton[2])
panel.add(numberButton[7])
panel.add(numberButton[8])
panel.add(numberButton[9])
panel.add(operatorButton[1])
panel.add(operatorButton[3])
panel.add(numberButton[0])
panel.add(positiveminus)
panel.add(reciprocal)
panel.add(radixpoint)
panel.add(equal)
add(result, "North")
add(panel, "Center")
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0)
}
})
setSize(270, 200)
setLocation(300, 230)
setVisible(true)
}
public void actionPerformed(ActionEvent e) // 按钮的单击事件处理方法
{
if (e.getSource() instanceof NumberButton) // 数字按钮
{
NumberButton b = (NumberButton) e.getSource()
if (linklist.size() == 0) {
int number = b.getNumber()
linklist.add("" + number)
result.setText("" + number)
pressequal = false
}
else if (linklist.size() == 1 && pressequal == false) {
int number = b.getNumber()
String num = (String) linklist.getFirst()
String s = num.concat("" + number)
linklist.set(0, s)
result.setText(s)
} else if (linklist.size() == 1 && pressequal == true) {
int number = b.getNumber()
linklist.removeFirst()
linklist.add("" + number)
pressequal = false
result.setText("" + number)
} else if (linklist.size() == 2) {
int number = b.getNumber()
linklist.add("" + number)
result.setText("" + number)
} else if (linklist.size() == 3) {
int number = b.getNumber()
String num = (String) linklist.getLast()
String s = num.concat("" + number)
linklist.set(2, s)
result.setText(s)
}
} else if (e.getSource() instanceof OperatorButton) // *** 作按钮
{
OperatorButton b = (OperatorButton) e.getSource()
if (linklist.size() == 1) {
String fuhao = b.getOperator()
linklist.add(fuhao)
} else if (linklist.size() == 2) {
String fuhao = b.getOperator()
linklist.set(1, fuhao)
} else if (linklist.size() == 3) {
String fuhao = b.getOperator()
String number1 = (String) linklist.getFirst()
String number2 = (String) linklist.getLast()
String operator = (String) linklist.get(1)
try {
double n1 = Double.parseDouble(number1)
double n2 = Double.parseDouble(number2)
double n = 0
if (operator.equals("+")) {
n = n1 + n2
} else if (operator.equals("-")) {
n = n1 - n2
} else if (operator.equals("*")) {
n = n1 * n2
} else if (operator.equals("/")) {
n = n1 / n2
}
linklist.clear()
linklist.add("" + n)
linklist.add(fuhao)
result.setText("" + n)
} catch (Exception ee) {
}
}
} else if (e.getSource() == equal) // 等号按钮
{
pressequal = true
if (linklist.size() == 1 || linklist.size() == 2) {
String num = (String) linklist.getFirst()
result.setText("" + num)
} else if (linklist.size() == 3) {
String number1 = (String) linklist.getFirst()
String number2 = (String) linklist.getLast()
String operator = (String) linklist.get(1)
try {
double n1 = Double.parseDouble(number1)
double n2 = Double.parseDouble(number2)
double n = 0
if (operator.equals("+")) {
n = n1 + n2
} else if (operator.equals("-")) {
n = n1 - n2
} else if (operator.equals("*")) {
n = n1 * n2
} else if (operator.equals("/")) {
n = n1 / n2
}
result.setText("" + n)
linklist.set(0, "" + n)
linklist.removeLast()
linklist.removeLast()
} catch (Exception ee) {
}
}
} else if (e.getSource() == radixpoint) // 小数点按钮
{
if (linklist.size() == 0) {
pressequal = false
} else if (linklist.size() == 1) {
String dot = radixpoint.getLabel()
String num = (String) linklist.getFirst()
String s = null
if (num.indexOf(dot) == -1) {
s = num.concat(dot)
linklist.set(0, s)
} else {
s = num
}
linklist.set(0, s)
result.setText(s)
}
else if (linklist.size() == 3) {
String dot = radixpoint.getLabel()
String num = (String) linklist.getLast()
String s = null
if (num.indexOf(dot) == -1) {
s = num.concat(dot)
linklist.set(2, s)
} else {
s = num
}
result.setText(s)
}
} else if (e.getSource() == backspace) // 退格按钮
{
if (linklist.size() == 1) {
String num = (String) linklist.getFirst()
if (num.length() >= 1) {
num = num.substring(0, num.length() - 1)
linklist.set(0, num)
result.setText(num)
} else {
linklist.removeLast()
result.setText("0")
}
} else if (linklist.size() == 3) {
String num = (String) linklist.getLast()
if (num.length() >= 1) {
num = num.substring(0, num.length() - 1)
linklist.set(2, num)
result.setText(num)
} else {
linklist.removeLast()
result.setText("0")
}
}
} else if (e.getSource() == positiveminus) // 正负号按钮
{
if (linklist.size() == 1) {
String number1 = (String) linklist.getFirst()
try {
double d = Double.parseDouble(number1)
d = -1 * d
String str = String.valueOf(d)
linklist.set(0, str)
result.setText(str)
} catch (Exception ee) {
}
} else if (linklist.size() == 3) {
String number2 = (String) linklist.getLast()
try {
double d = Double.parseDouble(number2)
d = -1 * d
String str = String.valueOf(d)
linklist.set(2, str)
result.setText(str)
} catch (Exception ee) {
}
}
} else if (e.getSource() == reciprocal) // 求倒数按钮
{
if (linklist.size() == 1 || linklist.size() == 2) {
String number1 = (String) linklist.getFirst()
try {
double d = Double.parseDouble(number1)
d = 1.0 / d
String str = String.valueOf(d)
linklist.set(0, str)
result.setText(str)
} catch (Exception ee) {
}
} else if (linklist.size() == 3) {
String number2 = (String) linklist.getLast()
try {
double d = Double.parseDouble(number2)
d = 1.0 / d
String str = String.valueOf(d)
linklist.set(0, str)
result.setText(str)
} catch (Exception ee) {
}
}
} else if (e.getSource() == clear) // 清零按钮
{
pressequal = false
result.setText("0")
linklist.clear()
}
}
public static void main(String args[]) {
new Calculator()
}
}
class NumberButton extends Button // 数字按钮类
{
int number
public NumberButton(int number) // 构造方法
{
super("" + number)
this.number = number
setForeground(Color.blue)
}
public int getNumber() {
return number
}
}
class OperatorButton extends Button // 运算符号按钮类
{
String operator
public OperatorButton(String operator) // 构造方法
{
super(operator)
this.operator = operator
setForeground(Color.red)
}
public String getOperator() {
return operator
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)