您應該使用BufferedReader
和split
。這樣做的好處是,你知道有多大,讓您的陣列中的第二個維度爲split
方法會返回一個數組,你可以檢查其length
:
public static void main(String[] args) throws Exception {
final String s = "5\n"
+ "9 6\n"
+ "4 6 8\n"
+ "0 7 1 5";
final InputStream is = new ByteArrayInputStream(s.getBytes());
final int[][] array = new int[4][];
try (final BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
String line;
for (int i = 0; (line = br.readLine()) != null; ++i) {
final String[] tokens = line.split("\\s");
final int[] parsed = new int[tokens.length];
for (int j = 0; j < tokens.length; ++j) {
parsed[j] = Integer.parseInt(tokens[j]);
}
array[i] = parsed;
}
}
System.out.println(Arrays.deepToString(array));
}
輸出:
[[5], [9, 6], [4, 6, 8], [0, 7, 1, 5]]
由於數組不擴展,因此在while
循環中不容易使用它們,您不知道它們的大小。使用split
可讓您簡單地執行final int[] parsed = new int[tokens.length];
,其中Scanner
優於空白,您無法做到。
第一維尺寸是硬編碼,但如您所說的文件總是有4行。
歡迎來到Stackoverflow。你可以請你發佈你的代碼嗎?我們很樂意幫助你 – Barranka