好的,我正在从事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"); }
请提供您在尝试解决此问题时实施的示例代码。 –