> Java > java지도 시간 > Java로 계산기를 작성하는 일반적인 방법 요약

Java로 계산기를 작성하는 일반적인 방법 요약

高洛峰
풀어 주다: 2017-01-20 16:58:18
원래의
1835명이 탐색했습니다.

이 기사의 예에는 Java로 계산기를 작성하는 일반적인 방법이 요약되어 있습니다. 참고할 수 있도록 다음과 같이 모든 사람과 공유하세요.

방법 1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

package wanwa;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends JFrame {

private Container container;

private GridBagLayout layout;

private GridBagConstraints constraints;

private JTextField displayField;// 计算结果显示区

private String lastCommand;// 保存+,-,*,/,=命令

private double result;// 保存计算结果

private boolean start;// 判断是否为数字的开始

public Calculator() {

super("Calculator");

container = getContentPane();

layout = new GridBagLayout();

container.setLayout(layout);

constraints = new GridBagConstraints();

start = true;

result = 0;

lastCommand = "=";

displayField = new JTextField(20);

displayField.setHorizontalAlignment(JTextField.RIGHT);

constraints.gridx = 0;

constraints.gridy = 0;

constraints.gridwidth = 4;

constraints.gridheight = 1;

constraints.fill = GridBagConstraints.BOTH;

constraints.weightx = 100;

constraints.weighty = 100;

layout.setConstraints(displayField, constraints);

container.add(displayField);

ActionListener insert = new InsertAction();

ActionListener command = new CommandAction();

// addButton("Backspace", 0, 1, 2, 1, insert);

// addButton("CE", 2, 1, 1, 1, insert);

// addButton("C", 3, 1, 1, 1, insert);

addButton("7", 0, 2, 1, 1, insert);

addButton("8", 1, 2, 1, 1, insert);

addButton("9", 2, 2, 1, 1, insert);

addButton("/", 3, 2, 1, 1, command);

addButton("4", 0, 3, 1, 1, insert);

addButton("5", 1, 3, 1, 1, insert);

addButton("6", 2, 3, 1, 1, insert);

addButton("*", 3, 3, 1, 1, command);

addButton("1", 0, 4, 1, 1, insert);

addButton("2", 1, 4, 1, 1, insert);

addButton("3", 2, 4, 1, 1, insert);

addButton("-", 3, 4, 1, 1, command);

addButton("0", 0, 5, 1, 1, insert);

// addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值

addButton(".", 2, 5, 1, 1, insert);

addButton("+", 3, 5, 1, 1, command);

addButton("=", 0, 6, 4, 1, command);

this.setResizable(false);

setSize(180, 200);

setVisible(true);

}

private void addButton(String label, int row, int column, int with,

int height, ActionListener listener) {

JButton button = new JButton(label);

constraints.gridx = row;

constraints.gridy = column;

constraints.gridwidth = with;

constraints.gridheight = height;

constraints.fill = GridBagConstraints.BOTH;

button.addActionListener(listener);

layout.setConstraints(button, constraints);

container.add(button);

}

private class InsertAction implements ActionListener {

public void actionPerformed(ActionEvent event) {

String input = event.getActionCommand();

if (start) {

displayField.setText("");

start = false;

if (input.equals("+/-"))

displayField.setText(displayField.getText() + "-");

}

if (!input.equals("+/-")) {

  if (input.equals("Backspace")) {

   String str = displayField.getText();

if (str.length() > 0)

  displayField.setText(str.substring(0, str.length() - 1));

} else if (input.equals("CE") || input.equals("C")) {

displayField.setText("0");

start = true;

} else

displayField.setText(displayField.getText() + input);

}

}

}

private class CommandAction implements ActionListener {

 public void actionPerformed(ActionEvent evt) {

 String command = evt.getActionCommand();

 if (start) {

 lastCommand = command;

 } else {

 calculate(Double.parseDouble(displayField.getText()));

 lastCommand = command;

 start = true;

 }

}

}

public void calculate(double x) {

if (lastCommand.equals("+"))

result += x;

else if (lastCommand.equals("-"))

result -= x;

else if (lastCommand.equals("*"))

result *= x;

else if (lastCommand.equals("/"))

result /= x;

else if (lastCommand.equals("="))

result = x;

displayField.setText("" + result);

}

public static void main(String[] args) {

Calculator calculator = new Calculator();

calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

로그인 후 복사
로그인 후 복사

방법 2:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

import java.awt.*;

import java.awt.event.*;

public class MyCalculator {

 PRivate Frame f;

 private TextField tf = new TextField(30);

 private long result;

 private boolean append=false;

 private char Operator='=';

 private Button[] btn=new Button[15];

 public MyCalculator() {

  initComponent();

 }

 private void initComponent() {

  f = new Frame("My Calculator V1.0");

  f.setLayout(new BorderLayout()); //The frame uses BorderLayout

  f.addWindowListener(new WindowAdapter() {

   public void windowClosing(WindowEvent evt) {

    System.exit(0);

   }

  });

  Panel centerPanel = new Panel();

  centerPanel.setLayout(new GridLayout(5, 3)); //The panel uses GridLayout

  NumberListener nl=new NumberListener();

  OperatorListener ol=new OperatorListener();

  btn[10]=new Button("+");

  btn[11]=new Button("-");

  btn[12]=new Button("*");

  btn[13]=new Button("/");

  btn[14]=new Button("=");

  for (int i=0;i<=9;i++){

   btn[i]=new Button(String.valueOf(i));

   centerPanel.add(btn[i]);

   btn[i].addActionListener(nl);

   if (i%2==1){

    centerPanel.add(btn[(i+19)/2]);

    btn[(i+19)/2].addActionListener(ol);

   }

  }

  f.add(centerPanel, BorderLayout.CENTER);

  Panel northPanel = new Panel();

  tf.setEditable(false);

  northPanel.add(tf);

  f.add(northPanel, BorderLayout.NORTH);

 }

 public void go() {

  f.pack();

  f.setVisible(true);

 }

 public static void main(String[] args) {

  new MyCalculator().go();

 }

 /**

 *采用成员内部类方式,实现监听器接口,方便访问主类内类内部成员。

 *此类负责数字按钮Action事件监听和处理

 */

 class NumberListener implements ActionListener{

  public void actionPerformed(ActionEvent e){

   if (!append) {

    tf.setText("");

    append=true;

   }

   String s=tf.getText();

   s+=e.getActionCommand();

   tf.setText(s);

   if (!btn[10].isEnabled()){

    for(int i=10;i<=14;i++) btn[i].setEnabled(true);

   }

  }

 }

 /**

 * 成员内部类,负责操作符按钮的事件处理

 */

 class OperatorListener implements ActionListener{

  public void actionPerformed(ActionEvent e){

   if (!append) return;

   for(int i=10;i<=14;i++) btn[i].setEnabled(false);

   String s=tf.getText();

   long num=Long.parseLong(s);//get the number of textfield

   append=false; //set append

   switch(operator){

    case &#39;+&#39;:result+=num;break;

    case &#39;-&#39;:result-=num;break;

    case &#39;*&#39;:result*=num;break;

    case &#39;/&#39;:{

     if (num==0) result=0;

     else result/=num;

     break;

    }

    case &#39;=&#39;:result=num;break;

   }

   tf.setText(String.valueOf(result));

   //set the value of result to textfield

   String op=e.getActionCommand();

   operator=op.charAt(0); // set operator

  }

 }

}

로그인 후 복사

방법 3:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

package wanwa;

import java.util.*;

public class calc {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("*****************简易计算器****************");

System.out.println("*\t\t\t\t\t*");

System.out.println("* 使用说明: 1.加法 2.减法 3.乘法 4.除法 *");

System.out.println("*\t\t\t\t\t*");

System.out.println("*****************************************");

for(int i=0;i<100;i++){

System.out.print("\n请选择运算规则:");

int num = input.nextInt();

switch(num){

case 1:

System.out.println("\n******你选择了加法******\n");

System.out.print("请输入第1个加数:");

int jiashu1 = input.nextInt();

System.out.print("请输入第2个加数:");

int jiashu2 = input.nextInt();

System.out.println("运算结果为:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));

break;

case 2:

System.out.println("\n******你选择了减法******\n");

System.out.print("请输入被减数:");

int jianshu1 = input.nextInt();

System.out.print("请输入减数:");

int jianshu2 = input.nextInt();

System.out.println("运算结果为:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));

break;

case 3:

System.out.println("\n******你选择了乘法******\n");

System.out.print("请输入第1个因数:");

int chengfa1 = input.nextInt();

System.out.print("请输入第2个因数:");

int chengfa2 = input.nextInt();

System.out.println("运算结果为:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));

break;

case 4:

System.out.println("\n******你选择了除法******\n");

System.out.print("请输入被除数:");

double chufa1 = input.nextInt();

System.out.print("请输入除数:");

double chufa2 = input.nextInt();

System.out.println("运算结果为:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2));

break;

default:

System.out.println("\n你的选择有错,请重新选择!");

break;

}

}

}

}

로그인 후 복사

방법 4:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

package wanwa;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends JFrame {

private Container container;

private GridBagLayout layout;

private GridBagConstraints constraints;

private JTextField displayField;// 计算结果显示区

private String lastCommand;// 保存+,-,*,/,=命令

private double result;// 保存计算结果

private boolean start;// 判断是否为数字的开始

public Calculator() {

super("Calculator");

container = getContentPane();

layout = new GridBagLayout();

container.setLayout(layout);

constraints = new GridBagConstraints();

start = true;

result = 0;

lastCommand = "=";

displayField = new JTextField(20);

displayField.setHorizontalAlignment(JTextField.RIGHT);

constraints.gridx = 0;

constraints.gridy = 0;

constraints.gridwidth = 4;

constraints.gridheight = 1;

constraints.fill = GridBagConstraints.BOTH;

constraints.weightx = 100;

constraints.weighty = 100;

layout.setConstraints(displayField, constraints);

container.add(displayField);

ActionListener insert = new InsertAction();

ActionListener command = new CommandAction();

// addButton("Backspace", 0, 1, 2, 1, insert);

// addButton("CE", 2, 1, 1, 1, insert);

// addButton("C", 3, 1, 1, 1, insert);

addButton("7", 0, 2, 1, 1, insert);

addButton("8", 1, 2, 1, 1, insert);

addButton("9", 2, 2, 1, 1, insert);

addButton("/", 3, 2, 1, 1, command);

addButton("4", 0, 3, 1, 1, insert);

addButton("5", 1, 3, 1, 1, insert);

addButton("6", 2, 3, 1, 1, insert);

addButton("*", 3, 3, 1, 1, command);

addButton("1", 0, 4, 1, 1, insert);

addButton("2", 1, 4, 1, 1, insert);

addButton("3", 2, 4, 1, 1, insert);

addButton("-", 3, 4, 1, 1, command);

addButton("0", 0, 5, 1, 1, insert);

// addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值

addButton(".", 2, 5, 1, 1, insert);

addButton("+", 3, 5, 1, 1, command);

addButton("=", 0, 6, 4, 1, command);

this.setResizable(false);

setSize(180, 200);

setVisible(true);

}

private void addButton(String label, int row, int column, int with,

int height, ActionListener listener) {

JButton button = new JButton(label);

constraints.gridx = row;

constraints.gridy = column;

constraints.gridwidth = with;

constraints.gridheight = height;

constraints.fill = GridBagConstraints.BOTH;

button.addActionListener(listener);

layout.setConstraints(button, constraints);

container.add(button);

}

private class InsertAction implements ActionListener {

public void actionPerformed(ActionEvent event) {

String input = event.getActionCommand();

if (start) {

displayField.setText("");

start = false;

if (input.equals("+/-"))

displayField.setText(displayField.getText() + "-");

}

if (!input.equals("+/-")) {

  if (input.equals("Backspace")) {

   String str = displayField.getText();

if (str.length() > 0)

  displayField.setText(str.substring(0, str.length() - 1));

} else if (input.equals("CE") || input.equals("C")) {

displayField.setText("0");

start = true;

} else

displayField.setText(displayField.getText() + input);

}

}

}

private class CommandAction implements ActionListener {

 public void actionPerformed(ActionEvent evt) {

 String command = evt.getActionCommand();

 if (start) {

 lastCommand = command;

 } else {

 calculate(Double.parseDouble(displayField.getText()));

 lastCommand = command;

 start = true;

 }

}

}

public void calculate(double x) {

if (lastCommand.equals("+"))

result += x;

else if (lastCommand.equals("-"))

result -= x;

else if (lastCommand.equals("*"))

result *= x;

else if (lastCommand.equals("/"))

result /= x;

else if (lastCommand.equals("="))

result = x;

displayField.setText("" + result);

}

public static void main(String[] args) {

Calculator calculator = new Calculator();

calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

로그인 후 복사
로그인 후 복사

이 기사가 Java 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

Java에서 계산기를 작성하는 일반적인 방법에 대한 더 많은 예와 요약을 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿