2013-09-23 75 views
0

我需要將用戶輸入文本文件的每行(單個單詞)的內容添加到數組中的單獨元素中。 *我知道ArrayList是這個問題的更好的數據結構,但我僅限於使用一個數組。將每行從輸入文件添加到數組中

這裏是我的代碼:

public static void main(String[] args) throws FileNotFoundException { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter a file name: "); 
    System.out.flush(); 
    String filename = scanner.nextLine(); 
    File file = new File(filename); 
    FileReader reader = new FileReader(file); 
    try (BufferedReader buffReader = new BufferedReader(reader)) { 
     String line; 
     int i=0; 
     String[] words = new String[10]; 
     while((line = buffReader.readLine()) != null) { 
      words[i]=buffReader.readLine(); 
      System.out.println(words[i]); 
      i++; 
     } 
    } 
    catch(IOException e){ 
     System.out.println(e); 
    } 
} 

輸入文件很簡單:

Pans 
Pots 
opt 
sit 
it's 
snap 

計劃輸出如下。它似乎在跳過其他所有線路。

Pots 
sit 
snap 

回答

4

您正在閱讀每while循環迭代兩條線,一條在while狀態,並且其他在循環體的第一行。結果是每次迭代消耗兩行,並且只打印兩行中的第二行。

消除循環體中的第二個調用,以便每行有一個循環(和一個打印語句)迭代。

1

更改while循環,如下所示。如果while循環條件檢查,則您正在讀取該行,然後再次讀取while循環中第一行的行。所以你正在閱讀兩行,只打印一行。

while((line = buffReader.readLine()) != null) { 
     System.out.println(line); 
     i++; 
} 
0
while((line = buffReader.readLine()) != null) 

該行讀取和使用,第一輸入線,這就是爲什麼你沒有看到和偶數索引輸入。

0

你可以使用ArrayList,而不是使用toArray方法將其轉換爲數組嗎?你有什麼限制,爲什麼?

0
public static void main(String[] args) throws FileNotFoundException { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter a file name: "); 
    System.out.flush(); 
    String filename = scanner.nextLine(); 
    File file = new File(filename); 
    FileReader reader = new FileReader(file); 
    try (BufferedReader buffReader = new BufferedReader(reader)) { 
     String line; 
     int i=0; 
     String[] words = new String[10]; 
     //modify line = buffReader.readLine() 
     while((words[i]=buffReader.readLine()) != null) { 
       //modify //words[i]=buffReader.readLine(); 
      //words[i]=buffReader.readLine(); 
      System.out.println(words[i]); 
      i++; 
     } 
    } 
    catch(IOException e){ 
     System.out.println(e); 
    } 
} 
相關問題