Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改多维数组中一行的长度? B类{ 公共静态void main(字符串a[] { int x; 字符串aa[][]=新字符串[2][2]; aa[0]=a; x=aa[0]。长度; 对于(int y=0;yjavab123_Java_Arrays_Multidimensional Array - Fatal编程技术网

更改多维数组中一行的长度? B类{ 公共静态void main(字符串a[] { int x; 字符串aa[][]=新字符串[2][2]; aa[0]=a; x=aa[0]。长度; 对于(int y=0;yjavab123

更改多维数组中一行的长度? B类{ 公共静态void main(字符串a[] { int x; 字符串aa[][]=新字符串[2][2]; aa[0]=a; x=aa[0]。长度; 对于(int y=0;yjavab123,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,选择是 1)0 2)1 2 3.)0 4.)1 2 3 我告诉过第二个选项是正确的,因为数组是用[2][2]声明的,所以它不能像[0][2]那样。但是,答案是1 2 3。有人解释一下,这是怎么发生的吗???程序的参数被存储到aa[0]这是一个数组,因为aa是数组的数组 因此,程序实际上只是迭代main方法的参数。它打印1,2,3(它不关心aa[1]) 变量aa声明为字符串数组,而不是简单的多维数组。当设置aa[0]=a时,将数组数组的第一个元素设置为作为参数传递的字符串数组。因此,当您迭代aa[

选择是

1)0

2)1 2

3.)0

4.)1 2 3


我告诉过第二个选项是正确的,因为数组是用
[2][2]
声明的,所以它不能像
[0][2]
那样。但是,答案是
1 2 3
。有人解释一下,这是怎么发生的吗???

程序的参数被存储到
aa[0]
这是一个数组,因为
aa
是数组的数组

因此,程序实际上只是迭代
main
方法的参数。它打印
1,2,3
(它不关心
aa[1]


变量
aa
声明为字符串数组,而不是简单的多维数组。当设置
aa[0]=a
时,将数组数组的第一个元素设置为作为参数传递的字符串数组。因此,当您迭代
aa[0]的项时
您正在迭代放置在
aa[0]中的项目=一个
语句。

您是否在调试器中尝试过它以查看这是如何发生的?我正在使用命令执行此操作prompt@coders然后在调试器中运行它,看看它在做什么。被否决的是糟糕的研究工作。多维数组是从1到(n-1)的引用数组th维度。所以你可以随时自由更改引用。@coders好问题!!,我不知道为什么,人们说研究工作很差。对谁认为答案是错误的:你介意解释一下吗?@coders,被否决的人已经撤回了它;如果这个答案对你有效,那就接受吧。(否则,详细说明仍然不清楚的内容。)我认为仍然需要解决的问题是“在分配'aa[0]=a'时,会有什么预期行为导致它忽略'new'语句中的数组大小?”@Kieveli是的,你得到了确切的问题。
class B {
    public static void main(String a[])
    {
        int x;
        String aa[][]= new String[2][2];
        aa[0]=a;
        x=aa[0].length;
        for(int y=0;y<x;y++)
            System.out.print(" "+aa[0][y]);
    }
}
int x;
String aa[][]= new String[2][2]; // create an matrix of size 2x2
aa[0]=a; // store the program arguments into the first row of aa 
x=aa[0].length; // store the length of aa[0] which is the same as a
for(int y=0;y<x;y++) // iterate over aa[0] which is the same as a
    System.out.print(" "+aa[0][y]);
for (int i = 0; i < a.length; ++i)
    System.out.print(" " + a[i]);
// or even
for (String str: a)
    System.out.print(" " + str);
String[][] ma = new String[3][2];
ma[0] = new String[] {"a", "b"};
ma[1] = new String[] {"a", "b", "c", "d"}; // valid
String[] foo = new String {"1", "3", "33", "e", "ff", "eee"};
ma[2] = foo; // valid also