조건문 (Conditional) - 실습문제

DONI·2021년 8월 9일
0

Java

목록 보기
8/46
post-thumbnail

문제

두 개의 정수를 입력 받고, 문자 혹은 문자열로 연산기호(+, -, *, /, %)를 입력 받아 연산의 수행 결과를 출력하시오.

  • 단, 0으로 나눌 경우 "0으로 나눌 수 없습니다"를 출력하고 결과 값을 0으로 처리하며 연산 기호에 없는 문자를 입력하면 "입력하신 연산은 없습니다. 프로그램을 종료합니다."를 출력 후 프로그램을 종료하시오.

입출력 예시

첫 번째 정수 입력 : 5
두 번째 정수 입력 : 7
연산 기호 입력 : +
수행 결과 : 5 + 7 = 12


소스코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		// 문제 2 두 정수와 연산자를 입력 받아 연산 결과 출력
        
		Scanner sc = new Scanner(System.in);
		System.out.print("첫 번째 정수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두 번째 정수 입력 : ");
		int num2 = sc.nextInt();
		System.out.print("연산 기호 입력 : ");
		String op = sc.next();
		sc.close();

		int result = 0;
		switch (op) {
		case "+": result = num1 + num2; break;
		case "-": result = num1 - num2; break;
		case "*": result = num1 * num2; break;
		case "/":
			if (num2 != 0) result = num1 / num2;
			else System.out.println("0으로 나눌 수 없습니다.");
			break;
		case "%": result = num1 % num2; break;
		default:
			System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
			return;
		}
		System.out.println("수행 결과 : " + num1 + " " + op + " " + num2 + " = " + result);
	}
}

🏹 String 입력 메서드

  • next( )
    : 문자 또는 문자열을 공백(띄어쓰기) 기준으로 한 단어 또는 한 문자씩 입력

  • nextLine( )
    : 문자 또는 문장 한 라인 전체를 입력 (개행문자 기준)
    '\n'을 포함하는 한 라인을 읽고 '\n'를 버린 나머지만 리턴


🏹 Scanner 사용 시 문제점

스캐너로 값을 입력 받게 되면 입력 버퍼에 값이 임시 저장된 후,
저장된 내용 중에서 정수, 실수, 문자, 문자열을 읽어오게 된다.

  • next( ), nextInt( ), nextDouble( ) ...
    : 띄어쓰기 또는 엔터 전까지 값을 읽어들임
    예) 123\n → 123
  • nextLine( ) : 엔터까지 값을 읽어들임
    예) 123\n → 123\n

next( ), nextInt( ), nextDouble( ) 등으로 값을 입력 받으면 띄어쓰기 또는 엔터 전까지의 값을 읽어들이면서 입력 버퍼 제일 앞에 \n이 남아있게 된다. 이 상태에서 nextLine( )으로 문자열을 입력 받고자 하면, 입력 버퍼 제일 앞에 남아있는 \n을 먼저 읽어들이기 때문에 더 이상 값을 입력 받을 수 없다.

🧶 해결 방법 : next(), nextInt(), nextDouble() 등을 수행한 후
     바로 아랫줄에 nextLine( )을 한 번 더 수행하여 입력 버퍼에 남아있는 \n을 제거해준다!

profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글