2017-10-09 13 views
-1

問題点を教えてもらえますか?私は "tablica.txt" という名前のファイルから整数を読み取ろうとすることだし、それは、ファイルに以下のようになります。8 3 2 1 4 3 2txtファイルのjavaエラーからintを読み取る

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

この場合、配列の長さを定義する方法は、入力を変更するときに常にこの配列の適切な長さにすることを意味します –

関連する問題