LUMI_dev
2025-04-15 DailyReport 본문
2025-04-15 DailyReport
오늘 날짜 : 2025-04-15
진도 정리 :
오늘은 스테이지 1 3회독을 마치고 스테이지 2 스탭 1을 공부하고 있습니다.
오늘 공부한 토픽: Scanner 클래스의 nextLine() 사용
오늘 스테이지 1을 복기하던 도중, clubName 변수를 scanner.nextLine();으로 받는 코드에서 엔터를 치지 않았음에도 그냥 넘어가지는 문제가 발생하였습니다.
문제 발생 코드:
private void register(){
System.out.println("Insert name :");
String clubName = scanner.nextLine();
//해당 부분에서 enter을 치지 않았음에도 그냥 넘어가졌습니다.
//(코드)
}
문제 분석:
해당 문제는 nextInt() 메서드를 사용한 후 nextLine() 메서드를 호출할 때,
nextInt() 메서드를 사용 후 남은 엔터/줄바꿈 문자(\n) 가 원인이었습니다.
nextInt()를 통해 사용자가 정수를 입력하면 뒤에 줄바꿈 문자가 남습니다. 그러나 nextInt()는 사용자가 엔터를 입력하면 '버퍼'라는 입력을 임시로 저장하는 공간에 줄바꿈 문자(\n)를 그대로 두고 넘어갑니다.
그후 nextInt() 메소드를 사용하고 난 후 nextLine()을 사용하면, nextLine()이 '버퍼'에 남아있는 엔터를 읽어버려서 빈 문자열 ("")을 받게 됩니다.
이 문제를 해결하려면 nextInt() 사용 후 nextLine()을 한 번 더 호출해주어야 합니다.
수정 코드:
private int selectMenu(){
System.out.println("input number : ");
int inputNum = 0;
inputNum = scanner.nextInt();
scanner.nextLine(); //해당 코드를 수정 전 누락하였습니다.
if(inputNum>=0 && inputNum <= 3){
return inputNum;
}
return -1;
}
느낀점:
이 문제를 처음 경험했을 때, nextLine()이 동작하지 않는 이유를 정확하게 파악하기 어려웠습니다.
하지만 nextInt()가 엔터 문자를 남긴다는 점을 알게 되었으며, 남긴 엔터 문자를 처리하는 방법을 알게 되어 큰 도움이 되었습니다.
앞으로 각 메소드가 어떻게 동작하는지 뿐만 아니라 그로 인해 발생할 수 있는 문제를 좀 더 깊이 생각하고 코드를 작성해야겠다는 생각이 들었습니다.
'취준' 카테고리의 다른 글
1달 역량평가_DailyReport0421 (0) | 2025.04.28 |
---|---|
1달 역량평가_DailyReport0418 (0) | 2025.04.28 |
1달 역량평가_DailyReport0417 (1) | 2025.04.17 |
1달 역량 평가_0414 데일리 리포트 (0) | 2025.04.15 |
비전공자 개발자 상반기 취준 근황 (0) | 2025.04.10 |