2016-12-01 197 views
-3

我一直在嘗試編程一個叫做Sokoban的遊戲,在過去的幾天裏。遊戲的級別是簡單的.txt文件,你可以交換。我已經使用BufferedReader讀取了.txt文件,但將其保存到二維char數組時存在問題,因爲每個級別的行數和列數都不相同。有人告訴我要利用charAt,但我該怎麼做。Java:二維字符陣列

Sokobanlevel格式(http://www.sokoban-online.de/help/sokoban/level-format.html

希望你能幫助我。謝謝。

String file = "..."; 
BufferedReader br = Files.newBufferedReader(); 
String line = null; 
int rows = file.length; 
int cols = file[0].length; 
char[][] room = new char [rows][cols];   
while ((line = br.readLine()) != null) { 
      System.out.println(room[rows][cols]); 
     } 
+0

使用ArrayList。或者只是使用CSV閱讀器庫。這可能更容易。 – DejaVuSansMono

+0

可能重複的[convert string to arraylist in java](http://stackoverflow.com/questions/15331637/convert-string-to-arraylist-character-in-java) –

+0

@ LucasKot-Zaniewski理論上它是肯定的,但我不知道OP是否會得到它。 – DejaVuSansMono

回答

0

沒有你需要閱讀一切從文件的文件中的行數knowlege先確定行數。如果你使用List<char[]>來存儲每一行​​的char數組,這將是最簡單的。

你可以很容易地編寫具有相同功能的東西在Java 8雖然一個班輪:

File fl = new File(file); 
char[][] array = Files.lines(fl.toPath()).map(String::toCharArray).toArray(char[][]::new); 
0

可以初始化二維數組,每行有不同的列數:

char[][] c = new char[7][]; 
c[0] = new char[5]; 
c[1] = new char[3]; 
//etc 
+0

問題是我不能在txt文件中的[] cuz級別寫入數字可能有3x3,4x7或其他措施。所以我必須創建一個可以交換級別的char數組,並且我不知道這些措施。 –