二维数组

时间:2015-01-06 14:24:45

标签: java arrays for-loop

我正在制作一个计算和绘制抛物线的小程序。但是我在程序中的一小部分,我需要计算有价值的东西。

二次函数如下:y = a * (x - alpha)² + Beta

因此,如果我为此函数填写以下值:y = 2 * (x - 1)² + (-12)。我需要成为这个价值表:

  

x | -4.0 | -3.0 | -2.0 | -1.0 | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 |

     

y | 38.0 | 20.0 | 6.0 | -4.0 | -10.0 | -12.0 | -10.0 | -4.0 | 6.0 |

我设法让第一行正确,但第二行(计算te值的那一行)完全错误。

    public double[][] berekenWaardentabel(int input[], int AANTALKOLOMMEN, double startWaarde) {
    double[][] waarden = new double[RIJEN][AANTALKOLOMMEN];

    System.out.println(waarden.length);
    System.out.println(startWaarde + "\n");

    for(int i = 0; i < RIJEN; i++) {
        for(int j = 0; j < AANTALKOLOMMEN; j++) {
            waarden[0][j] = startWaarde++; //value of first row (start from -4.0, counts upwards) 
            waarden[1][j] = input[0] * (Math.pow((startWaarde - input[1]), 2)) + input[2];
            System.out.print(waarden[i][j] + "   ");
        }
        System.out.println();
    }
    return waarden;
}

这是我得到的输出:

  

-4.0 -3.0 -2.0 -1.0 0.0 1.0 2.0 3.0 4.0 5.0 6.0

     

86.0 | 116.0 | 150.0 | 188.0 | 230.0 | 276.0 | 326.0 | 380.0 | 438.0 | 500.0 | 566.0

任何人都知道如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

你必须犯错误:

你想要填充数组的两行(第0行(x)和第1行(y))。然后将x的值存储在第一行中,并在第二行中计算y(x + 1)。

你需要填充你的数组:

for (int j = 0; j < AANTALKOLOMMEN; j++) {
    waarden[0][j] = startWaarde; // value of first row (start from -4.0, counts upwards)
    waarden[1][j] = input[0] * (Math.pow((startWaarde - input[1]), 2)) + input[2];
    startWaarde++;
}

然后您可以显示您的值:

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < AANTALKOLOMMEN; j++) {
        System.out.print(waarden[i][j] + "   ");
    }
    System.out.println();
}

答案 1 :(得分:0)

首先是错误:

        waarden[0][j] = startWaarde++; //value of first row (start from -4.0, counts upwards) 
        waarden[1][j] = input[0] * (Math.pow((startWaarde - input[1]), 2)) + input[2];

您将startWaarde的值放在waarden[0][j]中。然后你把它递增一个。

然后计算更新 startWaarde的函数值。

因此,您的waarden[0][j]可能是4.0,但您计算waarden[1][j]而不是5.0的值4.0

你的另一个问题是你正在使用这一行:

for(int i = 0; i < RIJEN; i++) {

我不知道RIJEN的价值是什么。但是你的waarden数组应该只有两行。一旦你一次又一次地完成循环,startWaarde会不断增长和发展。因为只有在第二次循环迭代后才打印第二行,所以会看到错误的值。

你根本不应该有这个循环。