Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1주차 과제: 문자열 계산기 만들기 #16

Closed
awesomeo184 opened this issue Sep 18, 2021 · 2 comments
Closed

1주차 과제: 문자열 계산기 만들기 #16

awesomeo184 opened this issue Sep 18, 2021 · 2 comments
Labels

Comments

@awesomeo184
Copy link
Owner

문자열 계산기 만들어보기

기능적 요구사항

  • 사용자가 입력한 문자열 값에 따라 사칙연산을 수행할 수 있는 계산기를 구현해야 한다.
  • 문자열 계산기는 사칙연산의 계산 우선순위가 아닌 입력 값에 따라 계산 순서가 결정된다. 즉, 수학에서는 곱셈, 나눗셈이 덧셈, 뺄셈 보다 먼저 계산해야 하지만 이를 무시한다.
  • 예를 들어 2 + 3 * 4 / 2와 같은 문자열을 입력할 경우 (2 + 3) * 4 / 2 실행 결과인 10을 출력해야 한다.
  • 입력 가능한 숫자는 양의 정수로 제한한다.
  • 사용자가 exit을 입력하기 전까지 기능을 반복적으로 수행한다.
  • 예외가 발생하면 [ERROR] 에러 메시지 형식으로 메시지를 출력하고 입력을 다시 받는다.
    • 예를 들어, 입력으로 2 q 4 이 들어온다면 [ERROR] 잘못된 연산자를 사용하셨습니다 를 출력하고 입력을 다시 받는다.
  • 입출력 메시지나 에러 메시지는 본인이 원하는대로 하면 된다.

프로그래밍 제한사항

  • 메서드는 하나의 일만 하도록한다.
  • 하나의 메서드가 10 라인을 넘지 않도록 한다. 어렵다면 최대 15 라인을 넘지 않도록 해본다.
  • else 예약어를 사용하지 않는다.
  • 인덴트는 한 단계를 넘지 않도록 한다. 예를 들어 for문 안에 if 문이 있다면 인덴트는 두 단계이다. 너무 어렵다면 두 단계도 허용한다.
  • 코드를 더 개선해보고 싶다면 객체지향 생활 체조 9원칙을 참고해 리팩토링 해본다.
  • 기능을 구현하기 전에 README.md에 구현할 기능 목록을 정리해 추가한다.
  • README.md 에 기능 요구사항을 정리해보고 적절한 단위로 커밋을 나눠서 커밋해보자.
  • git의 commit 단위는 앞 단계에서 README.md 파일에 정리한 기능 목록 단위로 추가한다.

입출력 예시

💻 입력

  • 입력 1
실행할 연산을 입력해주세요:
2 + 3 * 4 / 2
  • 입력 2
실행할 연산을 입력해주세요:
exit

💻 출력

  • 출력 1
10
  • 출력 2
프로그램을 종료합니다.

추가적으로 해보면 좋을 것들

  1. JUnit을 학습하고 단위테스트 작성해보기
  2. 람다나 스트림을 적용할 수 있는 곳이 있는지 고민해보고 리팩토링 해보기

제출은 일단 본인이 원하는 방법으로 자유롭게 해봅시다.

권장드리는 방법은 현재 레포지토리를 fork/clone한 후 각자의 브랜치를 만들어서 작업을 하고 결과물을 풀리퀘스트하는 것입니다.

궁금하신 사항 있으면 댓글 달아주세요.

@iamjaewhan
Copy link
Collaborator

스터디원들 콜레보레이터로 추가되어있나요?

@awesomeo184
Copy link
Owner Author

에고 죄송합니다. 방금 추가했어요. 깃헙에 등록된 메일로 초대장 갔을거에요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants