2012-09-26 84 views
1

對於作業,我們必須讀取包含地圖的txt文件。有了地圖,我們應該讀取它的內容並將它們放入一個二維數組中。Java:將txt文件讀入二維數組

我已經設法將文件讀入一維String ArrayList,但我遇到的問題是將它轉換爲二維char數組。

這是我迄今爲止在構造函數中:

try{ 

    Scanner file=new Scanner (new File(filename)); 

    while(file.hasNextLine()){ 

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

     String line= file.nextLine(); 

     lines.add(line);  

     map=new char[lines.size()][]; 

    } 
} 
catch (IOException e){ 
    System.out.println("IOException"); 
} 

當我打印出來的lines.size()它打印出1,但是當我看一下這個文件有10

提前致謝。

回答

4

您必須創建列表以外的列表循環。有了您的實際應用中,您爲每個新行一個新的列表,所以它總是有大小1.

// ... 
Scanner file = new Scanner(new File(filename)); 
List<String> lines = new ArrayList<String>(); // <- declare lines as List 
while(file.hasNextLine()) { 
// ... 

順便說一句 - 我不會命名char[][]變量map。地圖是完全不同的數據結構。這是一個數組,如果您在循環內部創建,則可能會遇到與列表相同的問題。但是,現在你應該知道速戰速決;)

0

更改代碼如下:

public static void main(String[] args) { 
     char[][] map = null; 
     try { 
      Scanner file = new Scanner(new File("textfile.txt")); 
      ArrayList<String> lines = new ArrayList<String>(); 
      while (file.hasNextLine()) { 
       String line = file.nextLine(); 
       lines.add(line); 
      } 
      map = new char[lines.size()][]; 
     } catch (IOException e) { 
      System.out.println("IOException"); 
     } 
     System.out.println(map.length); 
    }