Skip to content

davidp1123/Calculator-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calculator-Project

Calculator for programmers that run on Windows

JAVA Eclipse kepler Version 으로 작성. (Calculator)

Jehyun Park(박제현)

-------------------------------------------------Calculator-------------------------------------------------

[GUI] - 위에서 순차적으로

InputText에는 현재까지 입력한 계산식이 출력되며 OutputText에는 = 버튼(혹은 키)를 눌렀을 경우에만 결과값을 출력됩니다. 진수 버튼 4개 & History, Converter, Data 버튼이 있습니다. 2진수 결과값 출력 Text가 있습니다. 숫자 및 연산자 버튼이 있습니다.

pdf에 나온 연산에 '(', ')' (괄호)와 '.' 을 추가했습니다.

이에 따라 연산이 pdf에 명시되어 있는 것과는 다르게 input을 끝마치면 괄호안의 계산을 먼저하고 이후 괄호 계산이 끝나면 남아있는 수 계산을 진행합니다. (계산순서는 아래 참고)

예를 들어

1 - (2 + 3) * 4 라고 한다면

(2 + 3) 계산후

1 - 5 * 4

1 - 20

= -19

식으로 계산합니다.

1.연산자를 연속 입력했을 경우 후의 연산자로 바꿔줍니다. ex) 1 + 에서 *를 입력할 경우 1 * 로 바꿔줍니다.

2.Backspace는 한번에 입력한 수를 지우는 CE와 다르게 한 글자 씩 지우며 InputText가 빌 때까지 삭제가 가능합니다.

3.진수는 16진수, 10진수, 8진수, 2진수 총 4가지를 고를 수 있습니다.

진수를 고르는 버튼 옆에 각 진수의 결과값이 뜹니다.

4.Key입력에서 숫자는 0 ~ 9, A ~ F까지 입력받을 수 있으며 연산자는 +,-,*,/,%를 입력받습니다. Backspace와 =(혹은 Enter)키도 받습니다.(shift 누른 상태도 가능)

추가하여 16진수 일경우에는 0 ~ 9포함하여 A ~ F를 입력할 수 있으며 10진수 일 경우 0 ~ 9까지, (이 경우엔 . 도 입력할 수 있습니다.) 8진수 일 경우 0 ~ 7까지, 2진수 일 경우 0 ~ 1까지만 입력할 수 있습니다.

5.마찬가지로 숫자 버튼은

16진수에선 모든 숫자 버튼을 사용가능하고 10진수에선 0 ~ 9 숫자 버튼을, (이 경우엔 . 버튼도 활성화 됩니다.) 8진수에선 0 ~ 7 숫자 버튼을, 2진수에선 0 ~ 1 숫자 버튼을 누를 수 있습니다.

6.잘못된 수식을 입력했을 경우 ex) 1 + 9)

History에 저장되지 않으며 InputText와 OutputText 에는 각각 Wrong fomula, Error라고 출력됩니다. 0으로 나눌 경우엔 InputText는 그대로 두고 OutputText에는 Infinity라고 출력됩니다.(History에 저장됩니다.)

7.결과값 출력후 연산자나 수를 입력했을 경우

ex) 1 + 9 = 이후 +를 입력한다면 InputText에 10 + 라고 출력됩니다.

수를 입력했다면 모든 값이 초기화되고 입력한 숫자가 InputText에 출력됩니다.

8.History에는 = 버튼(혹은 키)을 눌렀을 경우에 저장됩니다.

[연산 우선순위]

('+/-', 'NOT')-> ('MOD', '/', '>>', '*','<<')-> ('-', '+')-> (AND,XOR, OR)

[계산 방식]

  1. 연산 우선순위에 따라서 연산자를 찾습니다.
  2. 연산자를 찾을 경우 연산자가 나오기 이전 수를 num1에 저장, 연산자가 나온 다음 수를 num2에 저장합니다. (아래에 더 자세히 설명) ex) 1 + 24 * 35 - 3 일 경우 연산 우선순위에 따라 *를 연산자로 등록 후 연산자 얖의 수 24를 num1에, 뒤의 수 35를 num2에 저장합니다.
  3. doMath함수를 통해 num1과 num2를 연산합니다.

[계산 순서]

1.우선 괄호가 있는지 확인합니다.(있을 경우 2. 없을 경우 3.으로) 2.괄호가 있을 경우 계산 방식에 따라 괄호안의 연산을 먼저해주고 모든 연산이 끝날경우 괄호를 제거합니다. 3.괄호가 없을 경우 계산 방식에 따라 연산을 수행합니다. 4.OutputText에 결과값을 출력합니다.

※(1+ 4)에서 +/-을 누를 경우 -(1+4)로, NOT을 누를 경우 NOT((1+4))로 바꿔줍니다.

참고로 >> 와 << 는 윈도우 계산기와 동일하게 숫자 두개를 받아옵니다.(단일 계산이 아닙니다.) ex) 3 >> 3 = 24 ( 3 * 2^3)

[숫자와 연산자를 분리하여 계산하는 방법]

Space바를 통해 확인합니다. ex)(이해를 위해 space바를 %로 표현합니다.)

%6%+%3%

1.연산자 + 전에 %를 찾습니다. 2.%6%을 찾으면 %만 지우고 나온 6을 num1에 보냅니다. 3.연산자 + 후에 &를 찾습니다. 4.%3%를 찾으면 %만 지우고 나온 3을 num2에 보냅니다. 5.doMath함수에 num1과 연산자, num2를 보냅니다. 6.계산

-------------------------------------------------Converter-------------------------------------------------

1.Converter를 실행하면 Length, From -> To, Feet가 기본값으로 설정되어 있습니다

2.Converter의 X버튼을 눌러 종료하면 창이 사라지며 Calculator의 Converter CheckBox를 체크해제합니다. Converter CheckBox를 직접 체크해제하여 창을 숨길 수도 있습니다. 창을 다시 띄우면 이전에 연산했던 내용들은 보존되어 있습니다.

3.사용자가 Length, Weight ,Time 중 하나를 선택하면 그에 맞춰 자동으로 나머지 두 개의 ComboBox의 메뉴가 설정됩니다.

4.From -> To RadioButton을 선택하면 From TextField에 사용자가 값을 입력할 수 있게 설정되고, To TextField는 직접 수정할 수 없게 설정됩니다.

5.To -> From RadioButton을 선택하면 To TextField에 사용자가 값을 입력할 수 있게 설정되고, From TextField는 직접 수정할 수 없게 설정됩니다.

6.TextField에 값 입력 시 숫자와 .(dot)을 제외한 다른 값이 입력되면 자동으로 예외처리되어 결과값을 0으로 설정합니다.

7.결과값은 소숫점 셋째 자리까지만 표시합니다.

8.Add to History 버튼을 클릭하면 단위 종류, 입력값, 출력값을 History에 저장할 수 있습니다.

-------------------------------------------------History-------------------------------------------------

1.History에는 "="을 입력하는 순간 저장되며, History의 오른쪽에 정렬되어 표시됩니다.

2.History의 X버튼을 눌러 종료하면 창이 사라지며 Calculator의 History CheckBox를 체크해제합니다. History CheckBox를 직접 체크해제하여 창을 숨길 수도 있습니다. 창을 다시 띄우면 이전에 저장했던 내용들은 보존되어 있습니다.

2."="이 입력되면, 첫번째 줄에는 "Calculator"와 진수의 종류(Hexa, Decimal, Octal, Binary)가 출력되고, 두번째 줄에는 입력한 식이 출력되고, 세번째 줄에는 결과값이 출력됩니다.

3.Converter의 경우에는 Add to History 버튼을 클릭하면 첫번째 줄에는 "Converter"와 단위의 종류(Length, Weight, Time)가 출력되고, 두번째 줄에는 세부적인 단위 변환 결과가 출력됩니다.

4.Clear History 버튼을 클릭하면 History목록이 초기화됩니다.

5.Save to file 버튼을 클릭하면 현재 History에 있는 목록을 JFileChooser를 이용해 파일로 저장할 수 있습니다.

-------------------------------------------------Date-------------------------------------------------

1.Date는 두 날짜의 차이를 계산해주는 기능입니다.

2.From 날짜에 연도, 월, 일을 순서대로 선택한 후, To 날짜에 연도, 월, 일을 순서대로 선택한 후 Calculate 버튼을 누르면 두 날짜의 차이를 계산합니다.

3.계산된 두 날짜의 차이는 Difference textField에 출력되며, 이 값은 사용자가 직접 수정할 수 없습니다.

4.Add to History 버튼을 누르면 입력한 두 날짜와 차이가 History에 저장됩니다.


About

Calculator for programmers that run on Windows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages