使用扫描仪从文本文件中读取信息
reading info using scanner from text file
我在从文件中读取信息时遇到了这个问题。所以我有这个文本文件,其中包含我想要读取并添加到我的 ArrayList 中的整数。我现在的问题是扫描仪似乎只读取前两行而不是整个文件。
我的文本文件:
6
0 4 10 0 0 2
4 0 5 0 0 7
10 5 0 4 0 0
0 0 4 0 3 8
0 0 0 3 0 6
2 7 0 8 6 0
2 5
这是我的代码:
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
// read in the data here
while(in.hasNextLine()){
if(in.hasNextInt())
alist.add(in.nextInt());
in.nextLine();
}
这是我的输出:
6 0 4 10 0 0 2 2
希望有人能解决这个问题。我尝试将所有内容存储在字符串中并从那里读取,但我最终得到的都是个位数。
试试这个:
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
// read in the data here
while(in.hasNext()){
alist.add(in.nextInt());
}
您遇到问题是因为您在 while 循环末尾调用了 in.nextLine();
。这将调用下一行,这会让你跳过几行。
实际上你正在读取每一行的第一个整数,因为你是在行上循环而不是在它们的内容上循环:你只需检查行上的第一个标记是否为 int,读取它,然后继续下一行。
if(in.hasNextInt())
alist.add(in.nextInt());
替换为
while(in.hasNextInt())
{
alist.add(in.nextInt());
}
因为你只从每一行读取一次 int。
你应该试试这个来读取所有的整数
while(in.hasNextInt()){
alist.add(in.nextInt());
}
当您在代码中说 in.nextLine();
时,它会换行。所以在下一次迭代中它只会扫描行中的第一个整数。但是对于 hasNextInt
nextInt
对,它将得到整数跳过白色 space (space 和新行)并在到达文件末尾时停止
我在从文件中读取信息时遇到了这个问题。所以我有这个文本文件,其中包含我想要读取并添加到我的 ArrayList 中的整数。我现在的问题是扫描仪似乎只读取前两行而不是整个文件。
我的文本文件:
6
0 4 10 0 0 2
4 0 5 0 0 7
10 5 0 4 0 0
0 0 4 0 3 8
0 0 0 3 0 6
2 7 0 8 6 0
2 5
这是我的代码:
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
// read in the data here
while(in.hasNextLine()){
if(in.hasNextInt())
alist.add(in.nextInt());
in.nextLine();
}
这是我的输出:
6 0 4 10 0 0 2 2
希望有人能解决这个问题。我尝试将所有内容存储在字符串中并从那里读取,但我最终得到的都是个位数。
试试这个:
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
// read in the data here
while(in.hasNext()){
alist.add(in.nextInt());
}
您遇到问题是因为您在 while 循环末尾调用了 in.nextLine();
。这将调用下一行,这会让你跳过几行。
实际上你正在读取每一行的第一个整数,因为你是在行上循环而不是在它们的内容上循环:你只需检查行上的第一个标记是否为 int,读取它,然后继续下一行。
if(in.hasNextInt())
alist.add(in.nextInt());
替换为
while(in.hasNextInt())
{
alist.add(in.nextInt());
}
因为你只从每一行读取一次 int。
你应该试试这个来读取所有的整数
while(in.hasNextInt()){
alist.add(in.nextInt());
}
当您在代码中说 in.nextLine();
时,它会换行。所以在下一次迭代中它只会扫描行中的第一个整数。但是对于 hasNextInt
nextInt
对,它将得到整数跳过白色 space (space 和新行)并在到达文件末尾时停止