用户定义的数组维度和大小

时间:2016-01-07 14:09:13

标签: java arrays

我有无法解决的任务,我有任务,我在那里插入随机数到数组。用户可以选择数组是1D,2D,3D,数组大小是可选的。我尝试了一切,但没有取得成功。我不能使用ArrayList。 谢谢你的帮助。

double[] array= new double[size];
for ( int i;i<dimensional;i++)
{
 double[] array= new double[size];
}

编辑: 我介意是否是使用1D创建数组的有效方法,然后将一个或多个维度添加到此数组。

3 个答案:

答案 0 :(得分:0)

java中的多维数组本质上只是数组的数组。用户在运行时提供维度和大小的数量,因此您需要在此时动态构建此数组。这是一个奇怪的问题,而不是你试图用生产代码中的数组解决的问题,但它应该是可能的。尝试this question的接受答案,这似乎是一次非常好的尝试。

答案 1 :(得分:0)

所以,&#34;无法解决的&#34;任务......好吧,只要你使用原始类型并且维度在理论上可以是任何数字(仅限于可用的内存),你可能是对的。

但是,您可以使用某种对象(Java是面向对象的语言)并轻松地解决任务。基本上,您可能需要具有节点的树结构。您甚至可以编写一个构造函数,为每个级别设置固定大小,并且不提供整个数组的直接访问者。从:

开始
class Node {
    double payload;
    Node[] children;
}

我真的不明白你想用它做什么,但它非常符合N维数组的想法。

答案 2 :(得分:0)

另一种解决方案:使数组成为一维的,但使用各个尺寸的大小,可以计算出正确的索引。当然,它需要你处理逻辑。

E.g。在3x3大小的2D数组中,您可以使用9个大小的1D数组,并使用前三个索引作为第一行,接下来三个作为第二行,最后三个作为第三行。然后你可以使用这样的循环:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        //arr[i * 3 + j] = ...
    }
}