간단하게 자바로 프로그램을 짜보고 있었습니다.
while문을 돌려 그 안에 로직을 돌렸는데,
첫 번째 입력을 받는 부분에 \n이 들어가는 것을 확인했습니다.
import java.util.Scanner;
public class PayMain1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
PayService payService = new PayService();
while(true) {
System.out.print("결제 수단을 입력하세요.:");
String payOption = sc.nextLine();
if (payOption.equals("exit")) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.print("결제 금액을 입력하세요.:");
int amount = sc.nextInt();
// sc.nextLine();
payService.processPay(payOption, amount);
}
}
}
- 반복문이 한번 돌고 나면 ?
- 갑자기 첫 번째 입력문을 통과한 후, 두 번째 입력문이 나오는 현상을 발견했습니다.
원인
- Java의 'Scanner' 클래스는 사용자 입력을 받을 때 엔터키('\n') 까지 한 줄로 입력받는다.
- nextInt()와 같은 메서드를 사용할 경우, 정수를 읽은 후에도 엔터키가 버퍼에 남게 된다.!
해결
- 위의 코드에서 nextLine() 메서드를 호출하여 남아있는 엔터키를 비워 해결
'프로그래밍 언어 > 자바' 카테고리의 다른 글
Random()은 랜덤이 아니다? (0) | 2024.04.10 |
---|---|
Checked, Unchecked Exception, printStackTrace (0) | 2024.04.10 |