🚨 문제점
분명 continue를 사용해서 특정 횟수까지를 건너뛰기 했는데도
왜 계속 파일에서 읽은 값은 처음부터 출력되었을까?
⭕ 해결방법
#next는 변수에 넣어서 사용하자.
next와 관련된 함수를 쓸 때 주의해야 할 것이 있다.
그것은 바로 출력이 아니라 "읽는다"는 성격을 가지고 있다는 점이다.
때문에 그 next가 실행되면 출력이 되든 안 되었든 이미 읽힌 것이고
중간에 어떤 조건에 의해서 next가 실행되지 않았다면 아예 읽히지도 않게 된다.
#오류가 났던 포인트
나는 출력을 할 때 바로 nextInt를 사용하고 싶었다.
변수를 추가하지 않고 출력하는 방법으로 코드를 짧게 짜고 싶었다.
그러나 이렇게 코드를 짜고 출력을 하면
아무리 continue를 걸어놓았어도 계속 처음값부터 출력이 되었다.
for(int i=0; fscan.hasNext();i++) {
if(i<4)
continue;
System.out.printf("%d, ", fscan.nextInt());
}//for i
이유는 next때문이었다. continue때문에 next가 아예 실행되지 않았던 것.
그래서 continue가 끝난 시점의 next는 처음부터 읽는 상황에 처했던 것이다.
읽는 것은 계속해서 일어났어야 했고 나는 출력만 n번째에 했어야 했다.
때문에 next는 계속해서 반복적으로 일어났어야 하는 코드였고,
값을 가지고 제어를 하기 위해서 변수를 설정하는 것이 필수적으로 필요했다.
for(int i=0; fscan.hasNext();i++) {
int score = fscan.nextInt();
if(i<4)
continue;
System.out.printf("%d, ", score);
}//for i
💙 배운점
next함수를 변수에 담아서 사용하는 것이 안전하겠다.
그래서 읽는 것은 일관적으로 하되, 값만 제어하는 것이
내가 원하는 흐름의 결과를 출력하는 포인트가 되겠다.
개념을 알면서도 적용할 때 자주 헷갈리는 부분이니 잘 기억해두어야겠다.
'ERROR' 카테고리의 다른 글
[뉴렉처 6기] Thymeleaf│구분자 구문오류 처리 (0) | 2023.10.19 |
---|---|
[ERROR] JAVA|파일 값의 개수를 구하고 싶은데 값이 무한대로 나와요. (2) | 2023.06.22 |
[ERROR] JAVA|System.in으로 읽을 때는 FileInputStream / Scanner? (1) | 2023.06.15 |
[ERROR] JAVA|FileInputStream으로 파일이 안 불러와 진다..? (1) | 2023.06.14 |
[ERROR] GIT|원격 저장소에서 브랜치를 분명 삭제했는데 로컬 저장소에서 아직도 있는 것으로 보일 때 (230613) (0) | 2023.06.13 |