try{
cmd = sc.nextInt();
}catch(InputMismatchException e){
System.out.println("올바르지 않은 입력입니다. 숫자를 입력해주세요.");
}
-> 이유 : nextInt()의 버퍼에 이미 잘못 입력된 값이 남아있었기 때문
-> 해결법: 버퍼를 한 번 비워준다.
수정한 코드
try{
cmd = sc.nextInt();
}catch(InputMismatchException e){
System.out.println("올바르지 않은 입력입니다. 숫자를 입력해주세요.");
sc.nextLine(); // 버퍼를 비워준다.
continue;
}
System.out.printf("%d. %s | %d원 | %s%n",
i+1,
p.getProductName(),
p.getPrice(),
p.getDetails());
이러면 글자수에 따라 '|'의 위치가 바뀌어 예쁘게 정렬되지 않았다.
-> 해결법: 공백을 미리 확보한다.
수정한 코드
System.out.printf("%d. %-15s | %,10d원 | %s%n",
i+1,
p.getProductName(),
p.getPrice(),
p.getDetails());
}