[Java] Scanner에서 nextInt() 입력후 nextLine()입력 시 엔터가 들어가는 문제

Sadie·2024년 7월 27일

Error

목록 보기
2/3

에러까지는 아니지만 나중에 잊어버릴까봐 기록해둔다


문제가 되는 상황

백준 10384번을 푸는 중이었음

int 숫자를 받고 해당 숫자만큼 반복문을 돌면서 공백이 포함된 문자열을 받으려고 했음

Scanner의 nextInt()를 입력받고 for문 안에 nextLine()을 받으려고 함

엔터까지 입력받는 nextInt() 사용후 해당 엔터가 nextLine()의 입력으로 들어가는 문제가 생김



해결방법

아래 출처 블로그를 기록함

  1. nextInt() 뒤에 nextLine()을 하나 추가
  2. 숫자를 nextLine()으로 받고, Integer.parseInt()

public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		
		int cnt = s.nextInt();
		//String num = s.nextLine(); // -> 이거 추가해서 해결됨
		
		// input
		List<String> stringList = new ArrayList<>();
		for (int i = 0; i < cnt; i++) {
			num = s.nextLine();
			num = num.toLowerCase();
			System.out.println(num);
			stringList.add(num);
		}
		
		// add alp to list
		int[] alp = new int[26];
		int a = 0;
		for (String st : stringList) {
			for (int i = 0; i < st.length(); i++) {
				Character c = st.charAt(i);
				if (c >= 97 && c <= 122) {
					System.out.println("a - " + st.charAt(i));
					a = c - 97;
					alp[a]++;
				}
			}
			
			// result
			for (int i = 0; i < alp.length; i++) {
				System.out.println(i + " : " + alp[i]);
			}
		}

이런 코드였음 (문제 정답은 아닙니다 푸는 중간에 코드 올림)



출처

https://allg.tistory.com/17

0개의 댓글