我正在尝试编写一个读取文本文件的代码,并将每一行存储到一个数组中,这是我的代码:
import java.util.Scanner;
import java.io.File;
public class JavaPractice
{
public static void main (String[] args) throws Exception
{
File file = new File("C:/Users/Andrew/Desktop/textFile.txt");
Scanner fileScanner = new Scanner(file);
int x = 1;
while (fileScanner.hasNextLine())
{
fileScanner.nextLine();
x++;
}
String names[] = new String[x];
Scanner reader = new Scanner(file);
while (reader.hasNextLine())
{
names[x] = reader.nextLine();
System.out.println(names[x]);
x--;
}
System.out.println(names[0]);
fileScanner.close();
reader.close();
}
}
我要去做的是让fileScanner读取我的文件有多少行,将其存储到X中,然后创建一个具有X个值的数组,然后开始将我的值存储到该数组中。
答案 0 :(得分:1)
问题出在数组声明中以及在while循环中访问数组的方式
String names[] = new String[x];
Scanner reader = new Scanner(file);
while (reader.hasNextLine())
{
names[x] = reader.nextLine();
System.out.println(names[x]);
x--;
}
您要声明大小为x的数组
String names[] = new String[x];
在while循环中,您正在这样访问,
names[x] = reader.nextLine();
这将遇到ArrayIndexOutOfBounds异常,因为您只能访问数组中的0到x-1个元素,
您应该尝试做到这一点,
names[x-1] = reader.nextLine();
System.out.println(names[x-1]);
此外,您应该声明x = 0而不是x = 1;这样您的行就可以正确计数了。