백준11659 구간합 런타임 에러
306
9 asked
하루코딩님 안녕하세요, 열심히 강의 들으면서 공부중입니다 항상 감사드려요
public class tes {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N + 1];
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
for(int i = 1; i <= N; i++) {
//누적 합 저장
arr[i] = arr[i - 1] + Integer.parseInt(st.nextToken());
}
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
sb.append(arr[end] - arr[start - 1]).append("\n");
}
System.out.println(sb);
}
}
위와 같이 구현을 하고 실제로 콘솔에서 제가 아래와 같이 입력하면 tokenizer에서 exception이 발생합니다
5 3
5 4 3 2 1
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.StringTokenizer.nextToken(StringTokenizer.java:347)
at tes.main(tes.java:19)
디버깅을 해보면 첫번째 5 3 입력값은 잘 읽어서 tokenizer에 저장이 되었는데요,
두번째 인풋인 "5 4 3 2 1"은 입력후 엔터를 치면 st = new StringTokenizer(br.readLine()); 라인을 넘어가면 실제 br(BufferedReader)에는 "[\n, 5, 4, 3, 2, 1, \n, , , , ,.. " 처럼 들어가 있는데 st(stringTokenizer)의 str 값을 보면 "" 이렇게 비어있어요 그래서 nextToken()이 없어 에러가 나는것같은데요
왜 제 itellij에서만 그럴까요 ? ㅠㅠㅠ jdk17 사용하고있습니다
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
2v2님, 질문 주셔서 감사합니다.
코드를 잘 보니 주신 예제에서 런타임 예외가 발생하는 부분은 StringTokenizer가 새로운 라인을 읽을 때 발생하는 것 같습니다. 입력이 정상적으로 BufferedReader를 통해 읽히지 않아 StringTokenizer에서 예외가 발생한 것으로 보입니다.
통상적으로 IDE 환경이나 콘솔 환경 때문에 이러한 문제가 발생하는 경우가 드뭅니다. 하지만 여러 이유로 콘솔 입력이 정상적으로 처리되지 않을 수 있습니다. 예를 들어, IDE 내의 콘솔이 자동 개행 문자를 처리하는 방식이나 입력 버퍼링에 차이가 있을 수 있습니다. 또한, 시스템의 Locale 설정이 달라서 입력 형식에 영향을 줄 수도 있습니다.
해결 방안으로는 다음과 같은 방법들을 시도해 볼 수 있습니다:
- IDE 콘솔 설정을 확인하여 입력과 관련된 설정을 점검해 보시기 바랍니다.
- BufferedReader와 StringTokenizer 대신 Scanner를 사용하여 입력을 처리해보세요.
- 실제 백준 온라인 저지 환경에서 해당 코드를 제출하여 문제가 발생하는지 확인해보세요.
- 만약 Scanner 사용 시 문제가 없다면, IDE의 문제일 가능성이 있으므로 IDE를 업데이트하거나 재설치를 고려해볼 수 있습니다.
또한, jdk17을 사용하고 계시는데, 다른 버전의 JDK에서도 동일한 문제가 발생하는지 확인해보세요. 서로 다른 JDK 버전에서의 호환성 문제일 수도 있습니다.
위의 방법을 시도해도 문제가 해결되지 않는다면, IDE 사용에 있어서 특이한 설정이 되어 있거나 다른 문제가 있을 수 있으므로, IDE 공식 문서나 커뮤니티에 문의를 해보시는 것도 좋은 방법입니다.
도움이 되셨길 바랍니다. 공부하시는 데에 더욱 힘이 되는 인턴이 되겠습니다!
백준 1940 주몽의 명령 시간복잡도
0
59
0
다음영상이 문제 풀이 영상이라고 하셨는데 문제풀이 영상이 누락되어있는 것 같습니다
0
127
1
코딩테스트 디버깅
0
347
1
탐색 순서 질문
0
148
1
[P11726 2*N 타일채우기] top down 방식을 사용하니 런타임 에러가 발생합니다.
0
105
1
2018 연속된 자연수의 합 구하기 백준 사이트에서 메모리 초과 오류가 발생합니다.
0
201
1
1강 시간복잡도 중간에 중첩for문 직전에 상수는 상관없어요 하신 부분이 이해가 안됩니다
0
159
1
왜 int, long은 안되는지 궁금합니다.
0
224
1
DNA 비밀번호 (백준 12891) 통과가 안됩니다.
0
525
2
LCA 빠르게 구하기 Java 코드 시간초과
0
244
1
스택문제 백준 1874
1
459
1
백준 2178 미로탐색 질문 입니다.
0
448
1
구간합구하기1 (백준11659)
0
422
1
혹시 다른 ide에서 잘 돌아가는 프로그램이
0
349
1
내림차순으로 정렬하기 강의에서..
0
267
1
백준 11720 숫자의 합 질문 있습니다
0
433
1
(숫자의 합)1<=N <=100 사이의 값
0
383
1
소수구하기-백준 1929 질문
0
350
1
12891_DNA비밀번호
0
633
3
숫자의 합 구하기
0
391
1
안녕하세요 질문있습니다.
0
336
0
union 코드에 질문 있습니다.
0
401
2
[그리디 실전 문제] 최솟값을 만드는 괄호 배치 찾기 (백준 1541) - 반례를 못찾겠습니다 ㅠㅠ
1
309
1
[이진 탐색 실전 문제] 원하는 정수 찾기 편 질문
0
505
1

