백준 알고리즘 문제(27) - A+B-4
이번에는 아예 오류가나서 찾아봤다.
아 컴파일이 안되던 이유는 계속해서 입력받는 값이 null값이 되거나 Scanner에서는 예외처리가 된다.(NosuchElement)
그래서 whiled의 조건에
1. Scanner는 hasnextInt()를 통해 정수일땐 true, 정수가 아닐땐 false를 반환하도록 한다.
- BufferedReader는 무한정 입력되는 값에 대해서 null값을 반환하므로 while문의 조건안에 str(br.readLine()) != null, 즉 입력받는 값이 null값일 때 false가 되도록 조건을 넣어줘야만 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
String str;
while((str = br.readLine()) != null) {
st = new StringTokenizer(str," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append((A+B)).append('\n');
}
System.out.println(sb);
}
}
null을 조건에 넣어주고 밖에 str을 입력받을 값을 저장하는 공간으로 지정해줘야만 한다.
str 이라는 문자열이 필요한 이유는 저장할 공간이 존재해야 그 안에서 값을 바꿔가며 null의 여부를 검사할 수 있어서이다. while 조건에서는 str값에 매 반복마다 달라지는 입력값을 저장한 즉시 str을 검사한다.
str이 값을 가지고있으면 st에 파라미터 값을 주며 그 다음 연산이 진행되게 한다.
EOF(End of File) : 파일 종료 조건이 없이 입력이 주어져서 입력에서 더이상 읽을 수 있는 데이터가 존재하지 않을 때, 반복문을 종료하라는 것임.
분명 반복이 안끝나는 문제가 있을테고 try & catch문을 이용하지 않는 경우에는 이런식으로 null값을 방지해주는게 필요해보인다.
Author And Source
이 문제에 관하여(백준 알고리즘 문제(27) - A+B-4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@code_alpaca/백준-알고리즘-문제27-AB-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)