试图用Java读取矩阵

时间:2014-05-20 17:08:59

标签: java

大家好我试图从输入中读取一个确定要创建的矩阵大小的数字。然后读取所述矩阵并重现它。

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int dim = in.nextInt();
    char[][] tab = new char[dim][dim];
    in.nextLine();
    String temp = in.nextLine();

    for (int i = 0; i < dim - 1; i++) {
        for (int j = 0; j < dim - 1; j++) {
            tab[i][j] = temp.charAt(j);
        }
        temp = in.nextLine();
    }
    for (int i = 0; i < dim; i++) {
        for (int j = 0; j < dim; j++) {
            System.out.print(tab[i][j]);
        }
        System.out.println();
    }
}

事情是它忽略了最后一个字符和最后一行。使用此输入进行测试:

4
XXXX
OOO.
....
....

3 个答案:

答案 0 :(得分:0)

你的第一个双重for-loop(读取输入到制表符矩阵的那个)应该说i < dim而不是i < dim - 1,并且内部的j同意 - 环

像这样:

for (int i = 0; i < dim ; i++) { //Removed - 1
    for (int j = 0; j < dim ; j++) { //Removed - 1
        tab[i][j] = temp.charAt(j);
    }
    temp = in.nextLine();
}

答案 1 :(得分:0)

创建矩阵时循环的边界不正确。你应该做

for (int i = 0; i < dim; i++) {
    for (int j = 0; j < dim; j++) {

for (int i = 0; i <= dim - 1; i++) {
    for (int j = 0; j <= dim - 1; j++) {

但不要混淆两者。选择严格小于界限或小于或等于界限-1。

答案 2 :(得分:0)

你只有一个小问题,你必须去最后一个维度,所以对于一个5的数组,你应该直到4,但在代码中,由于int i = 0; **i < dim - 1**; i++

,它只是3
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int dim = in.nextInt();
    char[][] tab = new char[dim][dim];
    in.nextLine();
    String temp = in.nextLine();

    for (int i = 0; i <= dim - 1; i++) {
        for (int j = 0; j < dim - 1; j++) {
            tab[i][j] = temp.charAt(j);
        }
        temp = in.nextLine();
    }
    for (int i = 0; i < dim; i++) {
        for (int j = 0; j < dim; j++) {
            System.out.print(tab[i][j]);
        }
        System.out.println();
    }
}