簡體   English   中英

從txt文件中讀取整數java錯誤

[英]Read ints from txt file java error

你能告訴我有什么問題嗎? 我正在嘗試從名為“tablica.txt”的文件中讀取整數,它在文件中看起來像這樣:8 3 2 1 4 3 2

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));
        }
    }
}

錯誤:

線程“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) 在 java.util.Scanner.nextInt(Scanner.java:2076) 在 Operacje_na_plikach.Zad1.odczyt(Zad1.java:27) 在 Operacje_na_plikach.Zad1.main(Zad1.java:42)

您的代碼使用第一個數字來確定要讀取的數字數量。

如果您不知道需要讀取多少個數字,您可以使用 ArrayList 和函數 Scanner.hasNextInt() 如下:

ArrayList<Integer> arr = new ArrayList<Integer>();
while(scan.hasNextInt()) {
    int d = scan.nextInt();
    arr.add(d);
    suma += d;
}

ArrayList 是一個自動擴展以存儲數字的數組,並且 scan.hasNextInt() 檢查是否還有更多數字可供讀取。

您的代碼正在讀取第一個數字,然后使用該值來確定要讀取多少個數字。

您的輸入是8 3 2 1 4 3 2 ,因此您的程序讀取8 ,然后嘗試再讀取 8 個數字。

由於只有 6 個以上的數字,因此當您嘗試讀取第 7 個數字時會出現錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM