* 오류 지적, 오타, 내용 개선 댓글은 대환영입니다! 저도 초보니까요.
안녕하세요, 갓벨입니다. 이번에는 백준 온라인 저지 11718번, 그대로 출력하기로 찾아뵈었습니다. 사소한 것 하나때문에 계속 런타임 에러를 뿜어내는 문제입니다.
Next()? NextLine()?
Next와 NextLine()은 Scanner 클래스의 메서드입니다. Scanner의 객체를 생성하고 기존에는 NextInt()처럼 특정 자료형을 받는 메서드를 이용했습니다. 둘 다 String(문자열) 자료를 입력받는데, Next()는 입력되는 문자열부터 공백 전까지, NextLine()은 입력받은 줄 전체의 문자열을 저장하는 역할을 수행합니다.
이번 문제에서는 NextLine() 사용합니다. 문제를 봅시다.
문제
입력
출력
예제 입력
Hello Baekjoon Online Judge
예제 출력
Hello Baekjoon Online Judge
풀이
입력을 받아서 그대로 출력하는 것, 별로 어렵지 않아 보입니다.
글의 서두에서 NextLine()을 사용한다고 했었죠. 왜 쓰나면, "공백도 신경써야 하기 때문"에 Next()를 못 쓰는 겁니다 - 뭐 쓰려하면 쓸 수는 있겠지만, 있는 걸 안 쓸 필요는 없겠죠.
우선 Scanner 객채부터 생성합시다.
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); } }
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(true) // 무한 반복 { String a = sc.nextLine(); //입력을 받습니다. System.out.println(a); //입력받은 값을 출력합니다. } } }
될 걸 기대하고 문제를 제출해 봅니다.
채점 번호 | 아이디 | 문제 번호 | 문제 제목 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 | 제출한 시간 |
---|---|---|---|---|---|---|---|---|---|
9935150 | jjongha134 | 11718 | 그대로 출력하기 | 런타임 에러 | Java | 267 B |
기대가 무색해지게 런타임 에러가 났습니다. 틀린 것도 아니고 런타임 에러라니, 무슨 오류가 발생한 걸까요?
바로 NoSuchElementException이었습니다. 그러니까, nextLine() 계속 입력을 받는데 마지막에 더 이상 입력받을 줄이 없으면 에러를 띄우고 끝난다는 겁니다. 그럼 hasNextLine은 뭘까요?
hasNextLine()은 Scanner 클래스의 메서드로, boolean ( true or false ) 자료를 반환합니다. 더 입력받을 줄이 있으면 true, 더 입력받을 줄이 없으면 false를 반환합니다. 즉, 위 코드의 8행의 while(true)를 while(sc.hasNextLine())으로 바꿔야 하겠군요. 바꿔 보면 다음과 같습니다.
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { String a = sc.nextLine(); System.out.println(a); } } }
제출해 보니 정답이네요!
채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 | 제출한 시간 |
---|---|---|---|---|---|---|---|---|
9935205 | jjongha134 | 11718 | 맞았습니다!! | 12444 KB | 124 ms | Java / 수정 | 279 B |
그럼 다음 문제에서 봅시다!
'예전글 > BOJ 단계별로 풀어보기' 카테고리의 다른 글
[백준][2단계][10998번] A*B (Java) : 사칙연산(3) (0) | 2018.09.02 |
---|---|
[백준][1단계][11719번] 그대로 출력하기 2 (Java) (0) | 2018.08.30 |
[백준][1단계][10718번] We love kriii (Java) : 출력 (0) | 2018.08.29 |
[백준][1단계][10172번] 개 (Java) : 특수문자 출력, 개행 문자 (0) | 2018.08.29 |
[백준][1단계][7287번] 등록 (Java) : 백준 온라인 저지 프로필 (0) | 2018.08.29 |