🚨 문제점
data.txt파일에 "90 87 20 30 29 39 49 38 10 19 87 29 38 27 8"라는 값을 넣어서 저장했다.
그리고 파일의 값을 읽어와서 개수를 구하고 싶었다.
반복문에 hasNextInt()메소드를 사용해서 개수를 읽으려는데,
계속 무한루프가 돈다.
값은 분명 15개인데 왜 계속 무한루프가 돌까?
✏️ 해결방법
또 hasNext라는 메소드를 잘 이해하지 못해서 생긴 문제였다.
여기서는 hasNextInt를 사용했는데,
fscan.nextInt();를 통해서 값을 계속 읽어줘야지만
다음 값이 있는지 없는지를 판단해줄 수 있는데,
값을 아예 읽지 않고 hasNext를 했던 것...
값을 읽지를 않았으니
당연히 hasNext에서 계속 값이 있다고 나왔던 것이다.
🚨 문제1: 이 값들의 개수를 구하는 코드를 작성하시오.
int count = 0;
{
FileInputStream fis = new FileInputStream("res/data.txt");
Scanner fscan = new Scanner(fis);
while(fscan.hasNextInt()) {
//★여기서 값을 읽어줘야지만
//다음 값이 있는지 여부를 파악할 수 있다.★
fscan.nextInt();
count++;
}
System.out.println(count);
fscan.close();
fis.close();
}//지역화 (문제1: 개수 구하기)
더보기
⭕ 출력결과:
15
💙 배운점
지난번 에러도 그렇고 이번 에러도 hasNext와 관련되었다.
다음 값이 있는지를 조건을 걸어서
반복횟수를 제한하고 반복시키고 싶다면
반드시 값을 읽는 코드가 있어야 함을 명심하자.
'ERROR' 카테고리의 다른 글
[ERROR] Spring Data JPA|(수정) 복합키를 설정했는데 쿼리 메소드가 파라미터를 못 읽어올 때(@EmbeddedId) (0) | 2024.01.03 |
---|---|
[뉴렉처 6기] Thymeleaf│구분자 구문오류 처리 (0) | 2023.10.19 |
[ERROR] JAVA|파일에서 읽은 값을 n번째부터 출력하고 싶은데 왜 계속 처음부터 출력이 될까? (0) | 2023.06.17 |
[ERROR] JAVA|System.in으로 읽을 때는 FileInputStream / Scanner? (1) | 2023.06.15 |
[ERROR] JAVA|FileInputStream으로 파일이 안 불러와 진다..? (1) | 2023.06.14 |