InputReader格式化

时间:2013-11-22 07:04:02

标签: java format bufferedreader

我正在使用多维数组,但我被卡住了。 第一行是测试用例的数量,而下一行读取int(N)并构造N * N grid。我只需要一些测试用例的帮助。 我在下面做了一些事......

     public static int[][] parseInput(final String fileName) throws Exception {
            BufferedReader reader = new BufferedReader(new FileReader(fileName));

            int n = Integer.parseInt(reader.readLine());
            int[][] result = new int[n][n];

            String line;
            int i = 0;
            while ((line = reader.readLine()) != null) {
                String[] tokens = line.split("");
                for (int j = 0; j < n; j++) {
                     result[i][j] = Integer.parseInt(tokens[j]);
        }

            i++;
         }

      return result;
   }

只需要如何阅读此示例输入

3
2
||
..
3
|.|
...
|||
2
|.
.|

如何阅读第一行以继续阅读剩余的测试用例。 例如上面(读入3并读入3个输入以构建网格)。

2 个答案:

答案 0 :(得分:0)

请尝试这个:

public static void parseInput(final String fileName) throws Exception {
    BufferedReader reader = new BufferedReader(new FileReader(fileName));

    int test_cnt = Integer.parseInt(reader.readLine());
    for(int i = 0; i < test_cnt;i++){
        int n = Integer.parseInt(reader.readLine());
        int[][] grid = parseInput(n, reader);
        //do something for result grid
    }
}

private static int[][] parseInput(int n, BufferedReader reader) throws Exception{
    int[][] result = new int[n][n];
    String line;
    int i = 0;
    while (i < n && (line = reader.readLine()) != null) {
        //String[] tokens = line.split("");
        char[] tokens = line.toCharArray();
        for (int j = 0; j < n; j++) {
            result[i][j] = (int)tokens[j];
        }
        i++;
    }
    return result;
}

答案 1 :(得分:0)

尝试使用它。(我认为这是一个编程竞争问题) 此示例用于读取标准输入。你可以使用FileReader(你的读者)。其他人都是一样的。

public class Test {

public static void main(String[] args) throws Exception {
   solve();
}

public static void solve() throws Exception {

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    int testcases = Integer.parseInt(reader.readLine());

    int i = 0;
    for (i = 0; i < testcases; ++i) {
        int n = Integer.parseInt(reader.readLine());
        int[][] result ;

        result = parseInput(reader, n);

        System.out.println("####");
        for(int j=0;j<n;++j){
            for(int k=0;k<n;++k){
                System.out.print(result[j][k] + " ");
            }
            System.out.println();
        }
        System.out.println("####");
    }
}

public static int[][] parseInput(BufferedReader reader, int n) throws Exception {

    int[][] result = new int[n][n];

    String line;
    int i = 0;
    for (i = 0; i < n; ++i) {
        line = reader.readLine();
        for (int j = 0; j < n; j++) {
            result[i][j] = line.charAt(j);
        }
    }

    return result;
}
}