728x90
반응형
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i = 0; i < n; i++) {
String line = scanner.nextLine();
if (line.trim().isEmpty()) {
break;
}
String[] parts = line.split(",");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1]);
System.out.println(a+b);
}
scanner.close();
}
}
scanner.nextInt()로 값을 입력받은 뒤, scanner.nextLine()을 사용하여 문자열을 읽을 때 예상치 못한 빈 줄이 입력이 됩니다. 이 문제를 해결하려면 nextInt()로 숫자를 읽은 후, nextLine()을 한 번 호출해 남은 줄바꿈 문자를 제거해야 합니다.
문제의 원인
scanner.nextInt()는 숫자만 읽고, 그 뒤에 있는 **줄바꿈 문자(\n)**는 입력 버퍼에 그대로 남겨두기 때문에, 그 다음에 호출되는 scanner.nextLine()은 이 남은 줄바꿈 문자를 읽어서 빈 줄로 간주합니다. 이로 인해, 코드가 의도대로 동작하지 않고 첫 번째 줄에서 빈 값이 들어가게 됩니다.
해결 방법
이를 해결하기 위해선 nextInt()로 숫자를 입력받은 후, 바로 scanner.nextLine()을 한 번 호출하여 남아 있는 줄바꿈 문자를 제거해줘야 합니다. 이렇게 하면 그 다음부터 정상적으로 입력을 받을 수 있습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine(); // 입력 버퍼에서 줄바꿈 제거
for(int i = 0; i < n; i++) {
String line = scanner.nextLine();
if (line.trim().isEmpty()) {
break;
}
String[] parts = line.split(",");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1]);
System.out.println(a+b);
}
scanner.close();
}
}
동작 방식
- scanner.nextInt()로 숫자 n을 입력받고,
- scanner.nextLine()을 호출해 남아 있는 줄바꿈 문자를 처리합니다.
- 그 이후부터는 정상적으로 nextLine()을 사용하여 각 줄을 읽고 파싱할 수 있습니다.
왜 이렇게 해야 하는지?
nextInt()는 숫자만 읽고 줄바꿈 문자를 처리하지 않기 때문에, 그 뒤에 호출된 nextLine()이 남아있는 줄바꿈 문자만 읽고 빈 문자열을 반환하게 됩니다. 따라서 이 문제를 해결하려면 nextInt()와 nextLine()을 함께 사용할 때, nextInt() 이후에 nextLine()을 한 번 더 호출하여 입력 버퍼를 정리해야 합니다.
728x90
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java] BufferedReader, BufferedWriter (0) | 2024.12.21 |
---|---|
[Java] java.net.BindException: Address already in use (1) | 2024.06.17 |
[Java][Maven][VSCode] syntax error near unexpected token `('. @REM Licensed to the Apache Software Foundation (ASF) (0) | 2023.12.31 |
[Java] printf에서 %n과 \n의 차이점 (0) | 2023.12.31 |
[Java] VScode javax.swing 실행이 안될 때 (0) | 2023.12.31 |