2017-10-09 185 views
-1

你能告訴我有什麼問題嗎?我試圖從名爲 「tablica.txt」 的文件中讀取整數,它看起來像一個文件:8 3 2 1 4 3 2從txt文件讀入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

如何在這種情況下定義一個數組的長度,我的意思是當我改變輸入時,它總是會使這個數組的長度合適 –