好的,我正在從事System.in輸入的工作;第一行是一個代表矩陣大小的int(n)。下一個n行是基體本身像這樣:如何分割來自System.in的輸入
10
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 1 0 0 0 0
0 0 0 0 1 0 0 1 1 0
0 1 0 0 0 0 0 1 0 0
0 0 0 0 0 1 1 0 0 0
1 1 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
的問題是,可能存在多個矩陣的在一個單一的輸入,因此下一行將具有另一int和下方的對應的矩陣,直到它碰到一個符合一個單獨的0.然後我必須將每個矩陣和頂部的大小一起作爲一個BufferedReader傳遞給一個將數字添加到二維數組的方法。
我只是有點不確定如何分割輸入並將其發送到方法。使用skip()創建一個新的BufferedReader並在每次工作時指定一個大小?我似乎遇到的最大問題是讀取尺寸,但隨後尺寸被排除,因爲它已被讀取。
乾杯
編輯:得到它的工作使用Bhesh古隆的方法,由於一噸。這是我結束了。我認爲一些if語句是多餘的,但它是有效的。
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
ArrayList<GraphAdjMatrix> mat = new ArrayList<GraphAdjMatrix>();
try
{
String line = buffer.readLine().trim();
String[] tokens = line.split("\\s+");
boolean[][] adj;
int n = Integer.parseInt(tokens[0]);
while (n != 0) {
if (tokens.length == 1 && n > 0) {
adj = new boolean[n][n];
for (int i = 0; i < n; i++) {
line = buffer.readLine().trim();
tokens = line.split("\\s+");
if (tokens.length != n)
{
throw new Error("bad format: adjacency matrix");
}
for (int j = 0; j < n; j++)
{
int entry = Integer.parseInt(tokens[j]);
adj[i][j] = entry != 0;
}
}
mat.add(new GraphAdjMatrix(adj, n));
}
line = buffer.readLine().trim();
tokens = line.split("\\s+");
n = Integer.parseInt(tokens[0]);
}
}
catch (IOException x) { throw new Error("bad input stream"); }
請提供您在嘗試解決此問題時實施的示例代碼。 –