java编写最简单的计算器,要求:需要手动输入“+”“-”等运算符,当输入的不是运算符时,

java编写最简单的计算器,要求:需要手动输入“+”“-”等运算符,当输入的不是运算符时,,第1张

import java.util.Scanner

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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8013948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存