Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
什么';这个Java程序怎么了?_Java_Arrays - Fatal编程技术网

什么';这个Java程序怎么了?

什么';这个Java程序怎么了?,java,arrays,Java,Arrays,为什么它不影响数组“a”的长度?我做错了什么 问题是,我被要求使用循环向数组长度添加5。我甚至不能直接增加长度。这看起来很简单,但我仍在学习过程中。我昨天做了,但我不记得是怎么做的。您只是在更改x的值,还必须重新指定此值以更改数组长度 class Main { public static void main(String[] args) { int x = 3; int [] a = new int [x]; x+=5; S

为什么它不影响数组“a”的长度?我做错了什么


问题是,我被要求使用循环向数组长度添加5。我甚至不能直接增加长度。这看起来很简单,但我仍在学习过程中。我昨天做了,但我不记得是怎么做的。

您只是在更改x的值,还必须重新指定此值以更改数组长度

class Main {
    public static void main(String[] args) {
        int x = 3;
        int [] a = new int [x];
        x+=5;
        System.out.println((x+=5));
        System.out.println(a.length);
    }
}

您只是在更改x的值,还必须重新分配此值以更改数组长度

class Main {
    public static void main(String[] args) {
        int x = 3;
        int [] a = new int [x];
        x+=5;
        System.out.println((x+=5));
        System.out.println(a.length);
    }
}

仅仅改变x的值是没有帮助的


您需要将修改后的值显式地分配回数组中

仅仅更改x的值是没有帮助的


您需要将修改后的值显式地分配回数组中

首先,您想实现什么? 在数组创建过程中,数组的长度将等于x值(代码的第二行),
如果你想使用动态数组,你应该考虑使用<代码> java .UTIL.ARARYLIST/<代码> < /P> < P>首先,你想要达到什么目标? 在数组创建过程中,数组的长度将等于x值(代码的第二行),
如果你想使用动态数组,你应该考虑使用<代码> java .UTIL.ARARYLIST//> >

< P>不能直接增加数组的大小。稍后,您将了解
ArrayList
s。可以将数组变量重新分配给新数组;长度不是数组类型的一部分。所以,让我们把它分成几个步骤

  • 创建一个大小为3的数组
  • 向用户报告旧数组的内容
  • 将长度存储在变量中
  • 5
    添加到该变量
  • 创建具有新长度的新数组
  • 使用
    for
    循环将旧数组的元素复制到新数组中的相应位置,但
    系统。arrayCopy
    较短
  • 将新数组分配给旧数组变量
  • 向用户报告已更改的旧数组的内容
  • 查阅
    列表
    阵列列表
    文档,了解人们在实践中是如何做到这一点的

  • 当你做这样的练习时,一定要先把它分解成单独的步骤。在编程时,将方法分解为只做一件事的单个方法

    不能直接增加数组的大小。稍后,您将了解
    ArrayList
    s。可以将数组变量重新分配给新数组;长度不是数组类型的一部分。所以,让我们把它分成几个步骤

  • 创建一个大小为3的数组
  • 向用户报告旧数组的内容
  • 将长度存储在变量中
  • 5
    添加到该变量
  • 创建具有新长度的新数组
  • 使用
    for
    循环将旧数组的元素复制到新数组中的相应位置,但
    系统。arrayCopy
    较短
  • 将新数组分配给旧数组变量
  • 向用户报告已更改的旧数组的内容
  • 查阅
    列表
    阵列列表
    文档,了解人们在实践中是如何做到这一点的

  • 当你做这样的练习时,一定要先把它分解成单独的步骤。在编程时,将方法分解为只做一件事的单个方法

    好的,我总结一下,给你一个更完整的答案:

    首先,当您初始化一个数组时,您为它分配一个定义的/有限的内存块如果您想在Java中更改这样一个数组的长度,您需要初始化一个新数组。Java中没有对数组的自动重新初始化。其他语言可能会为您做类似的事情,但Java不会

    其次,通过值传递数组初始化中的
    x
    ,这意味着创建数组的功能接收值,但不接收内存地址。Java中的方法也是这样做的:您将值作为参数传递给它们,但它们不能直接看到变量,只要您在每个方法的本地环境中不显式引用它们。这就是为什么并没有接受参数的函数直接受到传递值的变量变化的影响

    第三,如果您试图经常更改数组的大小,则应考虑使用包含所需功能的ArrayList


    第四,如果您希望继续使用数组而不是其他内容,并且希望保留数组成员/值,则仍然需要将旧数组内容传递给新的初始化数组。这可以通过循环旧数组来实现。

    好的,我总结一下,给你一个更完整的答案:

    首先,当您初始化一个数组时,您为它分配一个定义的/有限的内存块如果您想在Java中更改这样一个数组的长度,您需要初始化一个新数组。Java中没有对数组的自动重新初始化。其他语言可能会为您做类似的事情,但Java不会

    其次,通过值传递数组初始化中的
    x
    ,这意味着创建数组的功能接收值,但不接收内存地址。Java中的方法也是这样做的:您将值作为参数传递给它们,但它们不能直接看到变量,只要您在每个方法的本地环境中不显式引用它们。这就是为什么并没有接受参数的函数直接受到传递值的变量变化的影响

    第三,如果您试图经常更改数组的大小,则应考虑使用包含所需功能的ArrayList