【问题标题】:I want to declare an empty array in java and then I want do update it but the code is not working我想在 java 中声明一个空数组,然后我想更新它但代码不起作用
【发布时间】:2016-01-18 16:17:03
【问题描述】:

我想在 java 中声明一个空数组,然后我想更新它,但是代码不起作用...

public class JavaConversion
{
    public static void main(String args[])
    {
        int array[]={};
        int number = 5, i = 0,j = 0;
        while (i<4) {
            array[i]=number;
            i=i+1;
        }
        while (j<4) {
            System.out.println(array[j]);
        }
    }
}

【问题讨论】:

  • 你需要给数组一个大小...
  • 创建一个空数组意味着所有的槽都是空的,但是你至少要提供槽的数量。
  • 声明数组时,最好将括号直接放在类型之后,即int[] array
  • 我想要一个大小不固定的数组

标签: java arrays


【解决方案1】:

您正在创建一个长度为零的数组(没有可放入任何内容的插槽)

 int array[]={/*nothing in here = array with no elements*/};

然后尝试为数组元素赋值(你没有,因为没有槽)

array[i] = number; //array[i] = element i in the array of length 0

你需要定义一个更大的数组来满足你的需要

 int array[] = new int[4]; //Create an array with 4 elements [0],[1],[2] and [3] each containing an int value

【讨论】:

  • 我试过这个,但是当我做SomeClass array[] = new SomeClass[4];时,我得到一个错误提示“通用数组创建”。
  • @DonaldDuck 听起来你的SomeClass 是一个泛型类型(例如SomeClass&lt;SomeOtherClass&gt;),Java 中的数组不支持它。
【解决方案2】:

您的代码编译得很好。但是,您的数组初始化行是错误的:

int array[]={};

这样做是声明一个大小等于括号中元素数量的数组。由于括号中没有任何内容,因此您说数组的大小为 0 - 这使数组完全无用,因为现在它无法存储任何内容。

相反,您可以在原始行中初始化数组:

int array[] = { 5, 5, 5, 5 };

或者你可以声明大小然后填充它:

int array[] = new int[4];
// ...while loop

如果您不提前知道数组的大小(例如,如果您正在读取文件并存储内容),您应该使用ArrayList,因为这是一个在随着更多元素添加到其中(用外行的话)动态调整大小。

【讨论】:

    【解决方案3】:

    你需要给数组一个大小:

    public static void main(String args[])
    {
        int array[] = new int[4];
        int number = 5, i = 0,j = 0;
        while (i<4){
            array[i]=number;
            i=i+1;
        }
        while (j<4){
            System.out.println(array[j]);
            j++;
        }
    }
    

    【讨论】:

      【解决方案4】:

      你不能在数组中的任意位置设置一个数字而不告诉数组它需要多大。例如:int[] array = new int[4];

      【讨论】:

      【解决方案5】:

      你可以这样做,

      用空数组初始化,稍后赋值

      String importRt = "23:43 43:34";
      if(null != importRt) {
                  importArray = Arrays.stream(importRt.split(" "))
                          .map(String::trim)
                          .toArray(String[]::new);
              }
      
      System.out.println(Arrays.toString(exportImportArray));
      

      希望对你有帮助..

      【讨论】:

        【解决方案6】:

        您可以尝试在每次迭代时创建一个大小大于前一次迭代的新数组。 即

        public class JavaConversion
        {
            public static void main(String args[])
            {
                int array[]=new int[0];
                int number = 5, i = 0,j = 0;
                while (i<4) {
                    array = Arrays.copyOf(array, array.length + 1);
                    array[i]=number;
                    i=i+1;
                }
                while (j<4) {
                    System.out.println(array[j]);
                }
            }
        }
        

        【讨论】:

          【解决方案7】:

          所以问题在于您的数组声明中,您声明了一个带有空花括号{} 的空数组,而不是一个允许插槽的数组。

          粗略地说,可以有三种类型的输入:

          1. int array[] = null; - 不指向任何内存位置,空 arrau 也是如此
          2. int array[] = {} - 相当于int array[] = new int[0];
          3. int array[] = new int[n] 其中n 是一些数字,表示 数组中的内存位置

          【讨论】:

            【解决方案8】:

            该操作最好使用ArrayList

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-11-18
              • 2020-06-29
              • 2017-03-17
              • 2021-09-17
              • 1970-01-01
              • 1970-01-01
              • 2017-02-18
              相关资源
              最近更新 更多