package Baekjoon;
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
while(true) {
int a = input.nextInt();
int b = input.nextInt();
if(a==0 && b==0) break;
System.out.println(a+b);
}
}
}
0 0 을 입력받을때 까지 a와 b의 합을 계속해서 출력해야 하기에, 무한루프를 활용하면 쉽게 풀리는 문제다
if문과 출력문 순서를 바꿔쓰면 0 0의 합인 0도 출력되니까 if문을 꼭 출력문 앞에 써야한다
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
while(input.hasNextByte()) {
byte a = input.nextByte();
byte b = input.nextByte();
System.out.println(a+b);
}
}
}
막혔던 문제.. 처음에 그냥 단순히 true를 사용한 무한루프문으로 작성했었다 이클립스 상에선 입력을 더 안하면 출력도 멈추기 때문에 그래도 되는줄 알았는데 제출하니 런타임에러가 떴다..!
백준 자바 런타임에러를 서치해보니 보통 패키지나 클래스이름 관련한 실수가 많았다 그건 다 아닌데,,
결국 이 문제를 서치했더니 eof 개념과 관련된 오류라는걸 알아냈다.
EOF는 end of file의 약자로 더이상 읽을 데이터가 없다는 것을 의미하는, 입력할 데이터의 개수가 주어지지 않았을 때 그 코드의 종료시점에 관한 용어이다.
코드상에 입력을 더 안하면 실행을 중단한다는 내용의 코드를 작성하지 않아서 오답이었던 것이다
그럼 어떻게 입력을 더 안하는지를 체크할 것인가 ? hasNextByte() (혹은 hasNextInt()) 메소드 이용 ! 이 메소드는 byte/int를 입력 받는 경우엔 true를, 받지 않는 경우에는 false를 반환해주는 메소드이다.
'언어 공부 내용 정리 > 백준' 카테고리의 다른 글
백준 자바 2884, 1152 / split() , StringTokenizer() 비교 (0) | 2023.06.09 |
---|---|
백준 자바 문자열 : 27866, 9086, 11654, 10809 (0) | 2023.06.05 |
백준 자바 10807, 10871, 10818, 10813 (0) | 2023.05.23 |
백준 자바 10172 (0) | 2023.05.18 |
백준 자바 1008번 (0) | 2023.05.18 |