본문 바로가기

Java프로그래밍/예제문제

계산기 만들기 숙제

반응형
SMALL

계산기 만들기

두 개 숫자의 +, -를 계산하여 출력하는 계산기를 작성하시오.

클래스 CalculatorLogic을 완성하여,

다음과 같은 계산이 동작하도록 하시오.


1 + 1 = 2

1 + 11 = 12

11 + 1 = 12

1 - 1 = 0

1 - 11 = -10

11 - 1 = 10


숫자: 1자리 이상, 10자리까지 처리가 가능해야 함.

연산: +와 -만 처리

CLEAR를 누르면 0으로 초기화하고 0만 표시


입력순서에 맞는 않을 경우, 무시


제출물: 돌아가는 소스코드 시연


소스코드 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
public class CalculatorLogic 
{

	boolean firstNum;
	boolean opSymbol;
	boolean secondNum;
	
	int first;
	int second;
	String op;
	
	public String addSymbol(String s)
	{
		if (s.equalsIgnoreCase("+") == true)
		{
			op = s;
			return "";
		}
		else if (s.equalsIgnoreCase("-") == true)
		{
			op = s;
			return "";
		}
		else if (s.equalsIgnoreCase("=") == true)
		{
			if (op.equalsIgnoreCase("+"))
			{
				return first+second+"";
			}
			else if (op.equalsIgnoreCase("-"))
			{
				return first-second+"";
			}
		}
		else
		{
			return "---";
		}
		return "";

	}
	
	public CalculatorLogic()
	{
		firstNum = false;
		opSymbol = false;
		secondNum = false;
		first = 0;
		second = 0;
		op = "";
	}
	
}


소스코드 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
import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class CalculatorExterior extends JFrame
implements ActionListener
{
	CalculatorLogic cl;
	JPanel mainPanel;
	JPanel bottomPanel;
	JButton[] buttons;
	JTextField resultField;
	String[] buttonLabels = {"0","1","2","3","4",
	                     	 "5", "6", "7", "8", "9",
	                     	 "+", "-", "=", "CLEAR", ""};
	
	private void buildGUI()
	{
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(600, 600);
		setTitle("Calculator");
		
		mainPanel = new JPanel();
		bottomPanel = new JPanel();
		this.setLayout(new GridLayout(2,1));
			
		this.add(mainPanel);
		this.add(bottomPanel);
		
		mainPanel.setLayout(new GridLayout(0,5));
		for (int i = 0; i < 15; i++)
		{
			buttons[i] = new JButton(buttonLabels[i]);
			buttons[i].addActionListener(this);
			
			mainPanel.add(buttons[i]);
		}
		bottomPanel.setLayout(new GridLayout(0,1));
		resultField = new JTextField(40);
		bottomPanel.add(resultField);
		
		setVisible(true);
	}
	
	public CalculatorExterior()
	{
		cl = new CalculatorLogic();
		buttons = new JButton[15];
		buildGUI();
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		JButton btn = (JButton)e.getSource();
		//System.out.println("Button pushed "+btn.getText());
		if (btn == buttons[13]) // clear button
		{
			resultField.setText("0");
		}
		else
		{
			String result = cl.addSymbol(btn.getText());
			resultField.setText(result);
		}
	}

}


소스코드 3.

1
2
3
4
5
6
7
8
9
public class Test {

	public static void main(String[] args) {
		
		CalculatorExterior ce = new CalculatorExterior();

	}

}


반응형
LIST