[TIL]Lv1 계산기 만들기(2025-02-25)

2025. 2. 25. 17:37·TIL

문제

1. 양의 정수(0포함)를 입력받기

 

2. 사칙연산기호(+,-,*,/)를 입력 받기

 

3. 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기

 

4. 반복문을 사용하되, 반복의 종료를 알려주는 "exit" 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기

 

 

 

 

✅ 1. 양의 정수(0포함)를 입력받기

scanner 클래스를 이용하여 첫번째 숫자와 두번째 숫자를 입력 받는다.

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하세요(ex)5 4)");
int firstNumber = sc.nextInt();
int secondNumber = sc.nextInt();

 

 

✅ 2. 사칙연산기호(+ , - , * , / )를 입력 받기

scanner 의 문자열을 입력받는 메소드를 이용하여 연산자를 입력받는다 

 System.out.println("사칙연산자를 입력하세요(ex)+)");
 char operator = sc.next().charAt(0);

 

 

 

✅ 3. 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기

if (operator == '+') { 
       result = firstNumber + secondNumber;
 } else if (operator == '-') {
       result = firstNumber - secondNumber;
 } else if (operator == '*') {
       result = firstNumber * secondNumber;
 } else if (operator == '/') {
       result = firstNumber / secondNumber;
 }
 System.out.println("값="+result);

 

 

 

✅ 4. 반복문을 사용하되, 반복의 종료를 알려주는 "exit" 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기(전체코드)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(true) {
            int result = 0;
            System.out.println("첫번째 숫자를 입력하세요");
            int firstNumber = sc.nextInt();
            System.out.println("두번째 숫자를 입력하세요");
            int secondNumber = sc.nextInt();
            System.out.println("사칙연산자를 입력하세요");
            char operator = sc.next().charAt(0);
            sc.nextLine();

            if (operator == '+') {
                result = firstNumber + secondNumber;
            } else if (operator == '-') {
                result = firstNumber - secondNumber;
            } else if (operator == '*') {
                result = firstNumber * secondNumber;
            } else if (operator == '/') {
                result = firstNumber / secondNumber;
            }

            System.out.println("값="+result);
            System.out.println("1.계속하기(아무키나 입력) 2.종료(exit 입력)");
            String input = sc.nextLine();

            if(input.equals("exit")) {
                break;
            }
        }
        sc.close();
    }
}

 

 

 

콘솔 실행 화면

 

⚠️ ⚠️ ⚠️ 어라라!!!! ⚠️ ⚠️ ⚠️

 

값 출력후 계속할지 종료할지 입력을 받아야하는데 숫자를 입력하는 코드가 시작된다.

왜 이런거지....

빈문자를 입력받는거 같은데 원인이 뭔지 고민해보았다.

scanner 쪽 문제인거 같은데.....흠

 

문제는 입력 처리 방식에 있었다.

int secondNumber = sc.nextInt(); 에서 문제가 발생했는데 nextInt() 의 값을 입력하고 엔터를 누르면 공백을 기준으로 그 앞의 값을 인식한다.

그런데 String input = sc.next(); 이 코드 입장에선 엔터키를 입력으로 인식 받기 때문에 엔터키 자리를 공백으로 채워줘야 한다.

 

이를 해결하기 위해

next() 호출 후에 nextLine()을 추가하여 입력 버퍼를 비워주니 정상으로 작동하였다!!!

char operator = sc.next().charAt(0);
sc.nextLine();

 

 

 

 

다음은 응용으로 클래스도 적용하여 구현해보자.

'TIL' 카테고리의 다른 글

[TIL]키오스크 만들기(2025-03-14)  (0) 2025.03.14
[TIL]키오스크 만들기(2025-03-12)  (1) 2025.03.12
[TIL]키오스크 만들기(2025-03-10)  (0) 2025.03.10
[TIL]Lv3 계산기 만들기(2025-02-28)  (0) 2025.02.28
[TIL]Lv2 계산기 만들기(2025-02-26)  (0) 2025.02.26
'TIL' 카테고리의 다른 글
  • [TIL]키오스크 만들기(2025-03-12)
  • [TIL]키오스크 만들기(2025-03-10)
  • [TIL]Lv3 계산기 만들기(2025-02-28)
  • [TIL]Lv2 계산기 만들기(2025-02-26)
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (138) N
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (31) N
        • Java (16) N
        • SQL (13) N
      • Java (10)
      • 프로젝트 (22)
        • 트러블슈팅 (7)
        • 프로젝트 회고 (13)
      • git,Github (2)
      • TIL (36)
      • Spring (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java #arraylist #list #배열
    스파르타 코딩 #부트캠프 #첫ot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[TIL]Lv1 계산기 만들기(2025-02-25)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.