0

我必须在我的代码中使用 2d 数组,并且在将字符串拆分为 1d 数组并将其存储在我的 2d 数组中的某个位置时遇到了很多麻烦testCases[][]。从文本文件中读取字符串后,我正在使用 split 函数来创建字符数组。下面代码中的所有内容对我来说似乎都有意义,但是,当我尝试迭代并打印出 testCases 数组以确保我收集了正确的数据时,它打印出的数据不正确。

我感谢任何帮助解决这个问题,我已经花了几个小时来解决这个问题。

提前谢谢了。

//Read number of test cases 
String x = fin.nextLine();
int numTests = Integer.parseInt(x);

//create array
testCases = new String[numTests][100];

//Read actual test cases and store in 2d array
for(int i = 0; i < numTests; i++){
    String testCaseString = fin.nextLine();

    //System.out.println(testCaseString);                   
    testCases[i] = testCaseString.split("(?!^)"); 
    System.out.println(testCases[i][0]);
}
for(int z=0; z < numTests; z++){
    for(int q=0; q  < z; q++){
        System.out.printf("%s ", testCases[z][q]);
    }
    System.out.println();
}

测试用例 - 文本文件位置

2
bcb
c

当前控制台输出

c

所需的控制台输出

b c b
c
4

2 回答 2

1

您在输出数据时遇到问题。

尝试

for(int z=0; z < numTests; z++){
    for(int q=0; q  < testCases[z].length; q++){
        System.out.printf("%s ", testCases[z][q]);
    }
    System.out.println();
}

在内部循环中,您应该迭代 until testCases[z].length

于 2013-02-01T13:28:47.660 回答
0

我认为如果您查看这部分代码,您会发现您的循环有问题。

for(int z=0; z < numTests; z++){
    for(int q=0; q  < z; q++){
        System.out.printf("%s ", testCases[z][q]);
    }
    System.out.println();
}

q < z 如果 q 和 z 都从 0 开始,那么从开始 q 不小于 z,它等于 z,当循环完成并且 q 递增时,它现在大于 z。也许改变不平等。

于 2013-02-01T13:33:00.537 回答