当前位置: 首页 > 知识库问答 >
问题:

二维数组

曹驰
2023-03-14

我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。

二次函数如下: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个答案

蒋栋
2023-03-14
匿名用户

第一个错误是这样的:

        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];

您将startWarde的值放入waarden[0][j]中。然后你把它增加一。

然后计算更新的start Waarde的函数值。

所以你的瓦登[0][j]可能是4.0,但你计算的是瓦登[1][j]的值,而不是4.0。

您的另一个问题是,您正在使用这一行循环:

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

我不知道RIJEN的值是多少。但是你的waarden数组应该只有两行。一旦你一次又一次地循环,start Waarde就会不断增长。因为你只有在这个循环第二次迭代后才打印第二行,所以你会看到错误的值。

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

仉成益
2023-03-14

你必须犯错:

您需要填充数组的两行(第0行(x)和第一行(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();
}
 类似资料:
  • 二维数组 #include <stdio.h> #include <stdlib.h> //01.二维数组: // 1.二维数组的内存存储原理: // 所有数组,无论一维数组,二维数组,多维数组,在内存当中的 // 存储实质都是采取的连续存储方式 // 2.二维数组的规律赋值方式: // 先进行行遍历,在进行列遍历,再逐个进行逐个数组元素的具体赋值操作 //

  • 主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是

  • 对于我的类分配,我们需要编写一个名为Matrix的类,其中包含一个名为“矩阵”的私有二维int数组,最多可以是10行乘10列。我们需要使用两个常量MAXROWS=10和MAXCOLS=10来构造“矩阵”。Matrix类还需要以下属性: 行和列将包含小于等于MAXROWS和MAXCOLS的值。编写一个默认的matrix类构造函数,用以下值构造“Matrix”数组: 构造函数还必须设置行和列变量以匹配

  • 主要内容:指针数组和二维数组指针的区别二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放

  • 我有一个“连接四块板”,我用一个2d阵列(阵列[x][y]x=x坐标,y=y坐标)模拟它。我必须使用“System.out.println”,所以我必须遍历行。 我需要一种迭代方式[0,0][1,0][2,0][3,0][0,1][1,1][2,1]等 如果我使用正常程序: 它不起作用,因为它以[0,0][0,1][0,2][0,3]等方式进行迭代 正常过程保持在x中并递增y直到列的末尾,但我需要

  • 问题内容: 我有, 如图所示这里,我们创建一个从原点的二维之一。但是,如何迭代内部,以便可以在 其中 创建 列索引* 和 行索引 而又不 创建新 索引 呢?我希望将其索引打印到二维数组 (2x5) 时看起来像这样: __ * 我认为这里的主要问题是获取 列索引 和 行索引 而没有创建二维 索引 。是不是 问题答案: 如果要以行为主的顺序,给定row ,column 并且伪造(缺乏更好的术语)带有列