반응형
public class algo {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine())
{
String line = sc.nextLine();
System.out.println(line);
}
}
}
11718 | 맞았습니다!! | 12336 KB | 128 MS |
sc.next() -> 다음 토큰을 읽습니다.
sc.nextLine -> 다음 행을 읽습니다.
sc.hasNext -> 토큰이 있는지 확인하고 boolean을 리턴합니다. 공백의 경우 무시합니다.
sc.hasNextLine -> 행이 있는지 확인 후 boolean을 리턴합니다. 줄바뀜이 있으면 true를 리턴합니다.
예를 들어
Scanner s = new Scanner("\nABC\nD\n");
while(s.hasNextLine()){
String a = s.next();
System.out.println("out:"+ a);
}
코드가 있다면
out:ABC
out:D
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at algo.algo.main(algo.java:12)
이런 에러가 납니다
줄바뀜이 있어서 hasNextLine은 True를 리턴했는데, next는 더 이상 읽을 토큰이 없어서 나는 것입니다.
그래서 next를 쓸 땐 hasNext, nextLine을 쓸 땐 hasNextLine으로 맞추어 주는 것이 좋습니다.
Line이 들어간다면 줄바꿈을 아무 값이 없더라도, 무시하지 않고 읽는다고 알아두시면 됩니다.
반응형
'개발문제해결 > 알고리즘 문제풀이' 카테고리의 다른 글
백준 11720번 - 숫자의 합 (0) | 2018.02.22 |
---|---|
자바 선형 리스트 구현과 개념 (Linear List) (0) | 2018.01.28 |
게시판 페이징 처리에 대해서 (0) | 2017.11.25 |