2014-12-03 65 views
-1

我试图读取文件两次,但它似乎只有第一个while while循环运行。基本上,我用第一个while循环来计数元素,我分配了数组的大小。我用第二个调用方法并传递字符串(每个元素)。我试图通过使用while循环来执行这两个任务,但我很难设置数组的大小。如何读取文件两次

请帮助,如果有人知道如何做到这一点。我期待听到你们的声音。

预先感谢您

public static void main(String[] args)throws Exception 
{ 
    Scanner scan = new Scanner(new FileReader("first.txt")); 
    int count = 0; 
    while(scan.hasNext()) 
    { 
     count ++; 
     String s = scan.next(); 
    } 

    ArrayList<String> []words = new ArrayList[count]; 
    while(scan.hasNext()) 
    { 
     String f = scan.next(); 
     hash(f,count); //call method 
    } 
    scan.close(); 
    //System.out.println(count); 


} 
+1

您是否尝试过在两次调用之间重置扫描?因为当你正在做第二次迭代时,它的'.hasNext()'方法结束了。 – Emz 2014-12-03 02:11:38

+1

第一个循环结束,因为'scan.hasNext()'返回false。在下一个循环之前,你并没有对'scan'做任何事情,所以你认为'hasNext()'会返回除false之外的任何东西(就像它上次一样...) – John3136 2014-12-03 02:12:56

+0

我试图使用reset();但似乎没有任何工作。无论如何回到文件的第一行? – danny 2014-12-03 03:01:09

回答

0

你并不需要指定一个尺寸一个ArrayList的。它将根据需要处理大小调整。

public static void main(String[] args)throws Exception 
{ 
    Scanner scan = new Scanner(new FileReader("first.txt")); 
    ArrayList<String> words = new ArrayList<String>(); 
    while(scan.hasNext()) 
    { 
     String s = scan.next(); 
     words.add(s); 
    } 
    scan.close(); 
}