2015-11-28 121 views
0

缓冲读取器的新增功能,我正在尝试将文件放入数组列表中...这是迄今为止我所拥有的功能。将文件中的每个单词放入数组列表中

FileReader in = new FileReader(latestFile); 
    BufferedReader br = new BufferedReader(in); 

    int arrayCount = 0; 
    String[] array = null; 

    String nextLine = null; 
    if ((nextLine = br.readLine()) != null) { 
     arrayCount = array.length; 
     array[arrayCount - 1] = nextLine.split("\\s+"); 

    } 

任何人都可以解释我做错了什么?

+0

您能更准确地了解您的问题吗? – tiledcode

+0

除了使用答案中提到的'列表',您将受益于使用['Scanner'](http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html )从你的'BufferedReader'构造来读取单词,而不是读一行并分割它 – Aaron

回答

1

只需将String[] array = null;改为List<String> arrayList = new ArrayList<>();array[arrayCount - 1] = nextLine.split("\\s+");改为arrayList.add(nextLine.split("\\s+"));

I.e.使用ArrayList而不是未定义的数组。

+0

刚刚尝试了添加数组列表的第二部分。它在添加部分不断产生错误。我也补充,但没有奏效。 –

+0

什么错误?提供堆栈跟踪很难吗? – Andremoniy

0
BufferedReader file = new BufferedReader(new FileReader("yourfile.txt")); 

ArrayList<String> array = new ArrayList<String>(); 

String line; 
while ((line = file.readLine()) != null) 
{ 
    array.add(line.split("\\s+")); 
} 
file.close(); 

基本上你逐行读取文件线和各行添加到您的字符串的ArrayList。

如果你想访问你可以做这样的元素:

for (int i=0; i < array.size(); i++) 
    System.out.println(array.get(i)); 
+0

如果我错了,请纠正我,但是这并不能通过单词将它们分开。从我的打印输出看,它似乎根据行将它们分开。 –

+0

你是对的,我编辑了答案。谢谢。 –

0
  • 问题是你还没有初始化Array对象要做到这一点,你必须知道您要从文件中读取的元素数量。 所以,你可以在阵列初始化为

    String[] array = new String[The Number]; 
    
  • 因为它是不可能的,你知道,这将是数组中元素的个数,你必须使用一个ArrayList。使用ArrayList将很容易。

    希望这会有所帮助。

相关问题