안녕하세요 문제를 풀던 중, 인텔리제이 내에선 잘 구동이 되는데 코드업 상에서 오류가 나는 문제가 있어서 어떤게 옳은건지 판단이 서지 않고 놓친 부분이 있나 여쭤보고 싶어서 글 올렸습니다.
문제
제출소스코드
이클립스 실행결과는
코드업 실행결과는
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:14)
Java
복사
스캐너로 비슷하게 코드를 짜 올렸을 땐 통과가 되었습니다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char first = sc.next().charAt(0);
char second = sc.next().charAt(0);
System.out.printf("%c %c",second, first);
}
}
Java
복사
제가 궁금한 점은, bufferedReader에서는 제가 모르는 어떤 허점이 있어서 모든 상황에서 적용이 안되기 때문에 저런 에러가 나는건지 궁금합니다. 또한 서치를 어떤식으로 진행해야 하는지도 여쭤보고 싶습니다.
감사합니다.
답변
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String sentence = br.readLine();
char c1 = sentence.charAt(0);
char c2 = sentence.charAt(2); // charAt(1); 은 공백이기 때문에 pass~
System.out.printf("%c %c",c2,c1);
}
}
Java
복사
문제에서 공백(not 엔터)를 두고 2개의 문자가 입력된다고 했기 때문에
readline() 함수로 입력을 읽을 경우에 문제에서 제공하는 모든 입력이 다 읽히고
그 다음번째 readline()에서 아무것도 입력으로 주어지지 않기 때문에 NullPointer Excep이 터진것입니다.
따라서 readline() 으로 한 줄 모두 읽어온다음
그 문장안에서 charAt()으로 접근하시면 정답 나올 수 있습니다!