所以,我从一个文本文件中读取单词并将它们保存在一个arraylists的arraylist中。它应该准确地打印文件中的单词。例如:
test1 test2 test3 test4 test5
test6 test7 test8
test9 test10
但它打印了这个:这里的实际输出为什么它会这样,以及如何修复它?以下是阅读代码:
package com.company;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.Scanner;
public class WordOrder {
public ArrayList<ArrayList<String>> LinesList;
public ArrayList<String> Words_per_line_list;
protected String FileName;
protected File file;
public WordOrder(){
LinesList = new ArrayList<>();
Words_per_line_list = new ArrayList<>();
}
public void wordReading() throws IOException, IndexOutOfBoundsException{
String word_to_be_read;
Scanner scan = new Scanner (System.in);
System.out.println ("Enter the name of the file");
FileName = scan.nextLine ();
file = new File(FileName);
BufferedReader in = new BufferedReader(new FileReader (FileName));
if(in.read () == -1){
throw new IOException ("File does not exist or cannot be accessed");
}
System.out.println ("Test");
int i =0, j = 0;
while(in.readLine() != null) {
LinesList.add(i, Words_per_line_list);
while ((in.read ()) != -1) {
word_to_be_read = in.readLine ();
Words_per_line_list.add(j, word_to_be_read);
System.out.println (LinesList.get (i).get (j));
j++;
}
i++;
}
}
任何帮助都将不胜感激。
1条答案
按热度按时间neskvpey1#
while语句正在读取数据,但您没有对该数据执行任何操作。。
第一个
while(in.readLine() != null) {
将从文件中读取第一行i、 e.试验1试验2试验3试验4试验5
但你什么都不做。
第二个
while ((in.read ()) != -1) {
将从文件中读取单个字符。所以t
离开est6 test7 test8
阅读人word_to_be_read = in.readLine ();
,然后又是t
从下一行出发,离开est9 test10
为了下一个readline
您可以在外部while中将该行读入一个变量,然后只需在while循环内部处理该行即可。