【发布时间】:2017-03-14 02:40:41
【问题描述】:
我有一个程序,它从文件中读取一对整数并将其存储在我创建的 Point 类中。第一个整数是 x 坐标,第二个是文件每一行的 y 坐标。所有有效点的 x 坐标在 [0, 40] 范围内,y 坐标在 [1, 20] 范围内。
输入文件包含如下数据:
我执行了一些验证检查,以便我的程序忽略无效数据或超出范围的数据。
然后我必须在这些点之上绘制一条回归线。 我必须使用 2D 字符数组,并且更愿意以这种方式使用 Java 的 Point2D 类或其他一些 Java 图形类。
“X”表示点,“-”表示回归线段,“”表示线段和点位于同一点*
用于回归线的公式是这样的:
#编辑#
下面是我从@sprinter 得到的代码sn-p:
initializeArray(charArray);
int xySum = 0;
int xSqSum = 0;
int xSum = 0;
int ySum = 0;
for (Point points: point) {
xySum += points.getX() * points.getY();
xSqSum += points.getX() * points.getX();
xSum += points.getX();
ySum += points.getY();
}
int xMean = xSum / count;
int yMean = ySum / count;
int n = point.size();
int slope = (xySum - n* xMean * yMean) / (xSqSum - n * xMean * xMean);
for (Point points: point) {
charArray[points.getX()][points.getY()] = 'X';
}
// plot the regression line
for (int x = 0; x <charArray.length; x++) {
int y = yMean + slope * (x - xMean); // calculate regression value
charArray[x][y] = charArray[x][y] == 'X' ? '*' : '-';
}
这是我运行 sprinter's 代码后程序的输出。:
这也是我初始化 charArray 的方式:
public static void initializeArray(char[][] charArray) {
for(int k =0; k< charArray.length; k++) {
for(int d = 0; d<charArray[k].length;d++) {
charArray[k][d] = ' ';
}
}
}
这是新的输出:
【问题讨论】:
-
这是一个很大的问题,但描述很小,图片占用了很多空间。我很高兴再次提供更多信息。
-
你打印出你得到的斜坡和 yPred 了吗?
-
是的,我为斜率和 yPred 值做了值。 @RAZ_Muh_Taz
标签: java arrays multidimensional-array formatting char