【发布时间】:2017-03-17 11:57:48
【问题描述】:
我已经解决这个问题一段时间了,我似乎无法调试我的程序。 我已经使用 2d 数组创建了一个图形,我试图在 x 和 y 坐标点上放置一个“X”。然后我试图在这些点的顶部绘制一条最小二乘回归线。 这是我的代码 sn-p:
char[][] graph = new char[21][42];
for (int i = 0; i < count; ++i) {
graph[21 - 1 - yCoords[i]][xCoords[i] + 1] = 'X';
}
// plot the regression line
for (int i = 0; i < graph.length; i++) {
int yPred = Math.round(yMean + slope * (i - xMean)); // calculate regression value
graph[21-1-yPred][i + 1] = graph[21-1-yPred][i + 1 ] == 'X' ? '*' : '-'; //problem somewhere here
}
//This is how i initialized my array
public static void initializeArray(char[][] charArray) {
for(int k =0; k< charArray.length; k++) {
for(int d = 0; d < charArray[0].length;d++) {
charArray[k][d] = ' ';
}
}
for (int i = 0; i < charArray.length; ++i) {
charArray[i][0] = '/';
}
charArray[20][0] = '+';
for (int i = 1; i < charArray[0].length; ++i) {
charArray[20][i] = '-';
}
}
请记住,这不是完整的代码。如果有人很难找出问题所在,请在下面发表评论,我将解释或提供更多代码来解决我的问题。
现在我得到了这个输出。
我的预期输出是这样的:
问题似乎在于绘制回归线。所以我使用“X”表示点,“-”表示回归线段,“*”表示线段和点位于同一点。 我愿意提供更多细节。谁能帮我解决错误。
【问题讨论】:
-
看来您正在从 0 绘制到“graph.length”。 graph.length 等于第一个维度的长度,因此为 21。如果您计算图表中的破折号,您会看到其中有 21 个。
-
那么我该如何解决这个问题呢? @杰米
-
嗯,你可以试试graph[0].length
-
我确实尝试过,但它给了我数组越界异常? @杰米
-
不知道你在哪里得到一个索引越界异常,我猜这是因为你试图在这个指令上绘制一个超过 x 维度 (42) 长度的标记:图[21-1-yPred][i + 1]。 i+1 在 x 维度中超过了数组的末尾。
标签: java debugging multidimensional-array formatting char