암호
/*
작성자 : 김종식
조건 :
- 주어진 캐시백 적립 조건에 맞게 캐시백 계산
- 결제 금액을 입력하면, 이에 대한 캐시백 계산 후 결과 출력
(캐시백 계산 조건)
- 결제 금액의 10%를 적립한다.
- 캐시백포인트 단위는 백원단위이다.
- 한건의 캐시백 포인트는 최대 300원을 넘을 수 없다.
- (개인 추가) 100원 미만의 캐시백 금액은 0원으로 처리.
- (개인 추가) 문자열에 대한 exception 처리 및 음수 입력방지 처리.
- (개인 추가) while문으로 무한 반복이 되게 처리.
*/
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String() args) {
Scanner scan = new Scanner(System.in);
int num = 0;
while (true){
try{
System.out.println();
System.out.println("(캐시백 계산)");
System.out.println("종료는 0번을 입력해주세요.");
System.out.print("결제 금액을 입력해 주세요.(금액) : ");
num = scan.nextInt();
if (num == 0 ){
System.out.println("프로그램이 종료되었습니다.
");
break;
} else if (num < 0) {
continue;
}
int cashPoint = (int) ((num * 0.1) / 100) * 100;
if (cashPoint > 300) {
cashPoint = 300;
} else if (cashPoint < 100) {
cashPoint = 0;
}
System.out.printf("결제 금액은 %d원이고, 캐시백은 %d원 입니다.
", num, cashPoint);
}catch (InputMismatchException e){
System.out.println("숫자만을 입력해주시기 바랍니다.
");
scan.nextLine();
}
}
}
}
콘솔
제 생각에는
- 사용 편의성을 위해 무한 리플레이 및 엔딩 시스템을 추가했습니다.
금액 입력창에 0을 입력하면 종료됩니다. - 문자열이나 음수가 입력되면 처리되는 로직을 만들었습니다.
- try-catch에서 InputMismatchException이 발생했습니다.
- catch 문에서 scan.nextLine()을 사용하는 이유는 println이 출력되고 num 값을 자동으로 설정하는 스캐너가 입력되면 무한 반복이 발생하기 때문이다.