프로그래밍 2주차 ) 계산기 과제 Lv1 / TIL - day 11

하리비·2025년 2월 28일
3

📝 TIL

목록 보기
4/11
post-thumbnail

📖 요구사항 정리하기

  • 일반 계산기 처럼 숫자 -> 연산기호 -> 숫자 -> 순으로 계산이 될 것
  • 기본적으로 사칙연산을 지원할 것
  • 소숫점 계산도 지원할것 (double 타입)
  • 최대한 코드를 예쁘게 깔끔하게 작성할 것 !
  • (할 수 있다면) 괄호를 쓸 수 있게 할것 아직 못함;

📖 코드 작성해보기

일단 난 이번주에 변수가 뭔지부터 배운 완벽한 초보자이기 때문에..!
배운 범위내에서..! 작성하기로 결정

📌 git hub

그래도 일단 git 사용법을 배웠으니 참고해서 github에 연동을 먼저 한다
(기억이 안나서 참고한 블로그는 나의 블로그,, 나의 언어로 쓰여있어 알아보기 쉽다! 이것이 til의 순기능)

  1. git hub와 동기화하기
  2. 기본으로 작성한 코드를 push 하고
  3. branch를 나눈다! <- 요것은 걍 써보고 싶어서? 했다,, 안해도 됐을듯
  4. develop 브랜치에 저장하면서 기능추가하고,, main에 중간중간 업데이트 하기

📌 구상하기

  • (1) 첫번째 숫자 받기
  • (2) 연산기호 받기
    • 반복문 : 연산기호 외의 값들 거르기, 거르고 다시 입력
  • (3) 두번째 숫자 받고 연산하기
    • 반복문 사용, 사칙연산은 switch 사용하기
  • (4) 현재 결과 값 보여주고 계속 연산할지 물어보기 - 연산기호 입력시 로 돌아감 / exit 입력시 반복 종료
    • 3번 반복문 안에서!! 해야함 초기값 입력 후 연산이 누적해서 한 사이클로 돌아감

📖 계산기 레벨1 코드

// 1. 첫번째 숫자 입력
       System.out.println("숫자를 입력하세요.");
       int currentNum = scanner.nextInt();
       scanner.nextLine();

       // 2. 연산기호 입력
       String operator; // 연산기호는 1번째 while, 2번째 while 전부 사용함
       while (true) {
           System.out.println("연산기호를 입력하세요 ( + , - , x , / )");
           operator = scanner.nextLine();

           // 연산자를 잘못 입력했을 때 처음으로 이동 / + 곱셈을 대문자로 입력하면?
           if (!operator.equals("+") && !operator.equals("-") && !operator.equals("x") && !operator.equals("/")) {
               System.out.println("== 연산기호를 다시 입력하세요 ==");
               continue;
           } break;
       }

       // 3. 두번째 숫자 받고 연산시작
       while (true) {

           System.out.println("다음 숫자를 입력하세요.");
           int calNum = scanner.nextInt();
           scanner.nextLine();

           //계산하기
           switch (operator) {
               case "+":
                   currentNum = currentNum + calNum;
                   break;
               case "-":
                   currentNum = currentNum - calNum;
                   break;
               case "x":
                   currentNum = currentNum * calNum;
                   break;
               case "/":
                   if (calNum == 0) {
                       System.out.println("==0으로 나누기는 할 수 없습니다==");
                       continue;
                   } else {
                       currentNum = currentNum / calNum;
                   }
                   break;
           }

           // 4. 종료 or 계속 연산할지 입력
           System.out.println("현재값 = " + currentNum);

           while (true) {
               System.out.println("== 종료하려면 exit , 계속 계산하려면 연산기호를 누르세요 ==");
               String answer = scanner.nextLine();

               if (answer.equals("exit")) {
                   return;
               } else if (answer.equals("+") || answer.equals("-") || answer.equals("x") || answer.equals("/")) {
                   operator = answer;
                   break;
               } else {
                   System.out.println("==잘못된 연산기호입니다. 다시 입력하세요.==");
               }

           }
       }

   }
}

📌 튜터님의 피드백

  • firstNum, secondNum 대신 직관적인 이름을 사용하면 좋겠다! (누적 연산이라 n회차 연산에도 계속 이 값을 사용하기 때문)
    => currentNum, calNum으로 변경

  • 잘못된 연산기호를 거르는 if문이 좀 더 간결한게 예쁠것 같다!
    => if else로 엄청 길었는데, continue를 쓰고 예외값을 먼저 걸렀다

💡 여기까지 한 나의 소감

사실 벨로그 서버가 터져서.. 내가 임시저장해둔 글이 싸그리 날아갔다! 진심 이러지마
세상에,, 암튼간에 나의 소감을 또또또 적자면..!
어쨌거나 나에겐 처음이라 어려웠지만 나중에 내가 생각한대로 구현되는게 신기했다..!
비록 콘솔에서 작동하는 것이고 다른 분들은 사칙연산 외 기능들도 구현한 분들이 많지만
그래도 뿌듯했음..! 항상 아이디어가 많았는데, 그것을 구현할 기술이 나에겐 없었당
더 열심히 배워서 아이디어를 실현시켜줄 실력을 길러야겠다고 생각했다 !
화텡~~

0개의 댓글