[英]Fill a 2D array from a text file in java (NoSuchElementExcecption thrown)
我正在尝试从文本文件中填充2D数组(它只是pi到小数点后第900位,除了3.14之外没有空格或其他任何内容)。现在它将打印我所在的行和列索引,以及计数器(最终将被删除)。
import java.util.Scanner;
public class Array {
public static void main(String[] args) throws Exception {
// instantiate input file
java.io.File file = new java.io.File("C:\\arrayinput.txt");
// instantiate scanner to read file
Scanner scanner = new Scanner(file);
// instantiate array
String[][] array = new String[20][45];
// instantiate counter
int i = 1;
// loop to read file and assign a character to each array element
for (int rows = 0; rows < array.length; rows++) {
for (int columns = 0; columns < array[rows].length; columns++) {
System.out.println("Row: " + rows + ", column: " + columns + ", counter = " + i);
i++;
array[rows][columns] = scanner.next();
} // end inner for loop
} // end outer for loop
scanner.close();
}// end main method
}
该代码将循环两次并显示:
行:0,列:0,计数器= 1
行:0,列:1,计数器= 2
线程“主”中的异常java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at Array.main(Array.java:30)
我不明白为什么在没有代码的情况下运行此异常
array[rows][columns] = scanner.next();
如我所料,它将遍历0-19行和0-39列,并且计数器将一直迭代到900(因为文本文件pi到第900位)。 但是,当它开始将文本文件中的每个字符分配给每个元素时,我到达第0行第2列时会抛出错误,我也不知道为什么。 我的arrayinput.txt文件的内容:
3。
始终检查您的扫描仪是否具有hasNext()
令牌,然后考虑调用next()
。 试试这个:
我修复了一些错误,我的编译器抱怨您没有被捕获的异常。 最后在finally块(或您的尝试资源)中关闭扫描仪。
public static void main(String[] args) {
// instantiate input file
File file = new java.io.File("file.txt");
Scanner scanner = null;
// instantiate scanner to read file
try {
scanner = new Scanner(file);
// instantiate array
String[][] array = new String[20][45];
// instantiate counter
int counter = 1;
// loop to read file and assign a character to each array element
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("Row: " + i + ", column: " + j + ", counter = " + counter++);
if (scanner.hasNext()) {
array[i][j] = scanner.next();
}
} // end inner for loop
} // end outer for loop
} catch(FileNotFoundException e) {
System.err.println("There is no such file");
}finally{
scanner.close();
}
}
编辑
输出:
Row: 0, column: 0, counter = 1
Row: 0, column: 1, counter = 2
Row: 0, column: 2, counter = 3
Row: 0, column: 3, counter = 4
Row: 0, column: 4, counter = 5
Row: 0, column: 5, counter = 6
Row: 0, column: 6, counter = 7
Row: 0, column: 7, counter = 8
Row: 0, column: 8, counter = 9
Row: 0, column: 9, counter = 10
Row: 0, column: 10, counter = 11
Row: 0, column: 11, counter = 12
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.