你能告诉我这是什么问题吗?我正在尝试从名为“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)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 :(得分:0)
您的代码正在读取第一个数字,然后使用该值确定要读取多少个数字。
您的输入为8 3 2 1 4 3 2
,因此您的程序会读取8
,然后尝试再读取8个数字。
由于只有6个数字,当你尝试阅读第7个时,你会收到错误。
答案 1 :(得分:0)
您的代码使用第一个数字来确定要读取的数字。
如果您不知道需要读取多少个数字,则可以使用ArrayList和Scanner.hasNextInt()函数,如下所示:
ArrayList<Integer> arr = new ArrayList<Integer>();
while(scan.hasNextInt()) {
int d = scan.nextInt();
arr.add(d);
suma += d;
}
ArrayList是一个自动扩展以存储数字并进行扫描的数组。hasNextInt()检查是否还有剩余的数字可读取。