2017-10-09 4 views
-1

문제점을 알려주실 수 있습니까? 나는 "tablica.txt"라는 이름의 파일에서 정수를 읽으려고 그것은 파일에 그렇게 보이는 : 8 3 2 1 4 3 2txt 파일에서 int를 읽음 java 오류

package Operacje_na_plikach; 

import jdk.nashorn.internal.ir.WhileNode; 

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.Scanner; 

public class Zad1 { 
    /* 
    Plik tekstowy ‘tablica.txt’ ma postać: 8 3 2 1 4 3 2 Pobierz liczby z pliku tekstowego do tablicy i wypisz na ekranie sumę elementów tej tablicy. 
    */ 
    public static int[] odczyt(String nazwa) { 
     int[] arr = null; 
     try { 
      FileReader reader = new FileReader(nazwa); 
      Scanner sc = new Scanner(reader); 
      int d = sc.nextInt(); 
      int suma = 0; 
      arr = new int[d]; 
      for (int i = 0; i < d; i++) { 
       arr[i] = sc.nextInt(); 
       suma += arr[i]; 
      } 

      sc.close(); 
      reader.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return arr; 
    } 

    public static void main(String[] args) { 
     int[] arr = odczyt("tablica.txt"); 
     if (arr != null) { 
      System.out.println(Arrays.toString(arr)); 
     } 
    } 
} 

오류 :

Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at Operacje_na_plikach.Zad1.odczyt(Zad1.java:27) at Operacje_na_plikach.Zad1.main(Zad1.java:42)

답변

0

귀하의 코드 첫 번째 숫자를 읽은 다음 그 값을 사용하여 읽어야 할 숫자의 수를 결정합니다.

입력 내용이 8 3 2 1 4 3 2이므로 프로그램에서 8을 읽은 다음 8 개의 숫자를 더 읽으려고합니다.

숫자가 6 개 더 많으므로 7을 읽으려고하면 오류가 발생합니다.

+0

이 경우 배열의 길이를 정의하는 방법, 입력을 변경할 때 항상이 배열의 적절한 길이가됩니다. –

관련 문제