【问题标题】:How to initialize an array in Java?如何在 Java 中初始化一个数组?
【发布时间】:2010-12-28 15:05:23
【问题描述】:

我正在像这样初始化一个数组:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }     
}

NetBeans 在这一行指出一个错误:

data[10] = {10,20,30,40,50,60,71,80,90,91};

我该如何解决这个问题?

【问题讨论】:

标签: java arrays initialization


【解决方案1】:

试试

data = new int[] {10,20,30,40,50,60,71,80,90,91 };

【讨论】:

  • +1。你有一个额外的开口支架。也可以写成:data[0] = 10;数据[1] = 20; .... int data[] = new int[10] 之后,但是代码太多,最终会做同样的事情。
【解决方案2】:

您正在尝试将数组的第 10 个元素设置为数组尝试

data = new int[] {10,20,30,40,50,60,71,80,90,91};

FTFY

【讨论】:

    【解决方案3】:
    data[10] = {10,20,30,40,50,60,71,80,90,91};
    

    以上内容不正确(语法错误)。这意味着您正在为 data[10] 分配一个数组,该数组只能包含一个元素。

    如果要初始化数组,请尝试使用Array Initializer

    int[] data = {10,20,30,40,50,60,71,80,90,91};
    
    // or
    
    int[] data;
    data = new int[] {10,20,30,40,50,60,71,80,90,91};
    

    注意这两个声明之间的区别。将新数组分配给已声明的变量时,必须使用new

    即使您改正了语法,访问data[10] 仍然是不正确的(您只能访问data[0]data[9],因为Java 中的数组索引是从0 开始的)。访问data[10] 将抛出ArrayIndexOutOfBoundsException

    【讨论】:

    • 其实不正确的主要原因是语法错误!只有在语法可接受的情况下才会发生 AIOB。
    • 你能帮帮我吗,如果我声明一个这样的数组:public static void product(int[] array){ int[] productArray = new int[array.length]; 并想设置productArray 的所有值,我应该写什么? (我想我应该写一个循环并将所有值设置为零,有没有更好的方法来做到这一点?)
    • @Hengameh:默认初始化为 0。见stackoverflow.com/a/2154340/1000655
    【解决方案4】:

    你不能像这样初始化一个数组。除了其他人的建议之外,您还可以这样做:

    data[0] = 10;
    data[1] = 20;
    ...
    data[9] = 91;
    

    【讨论】:

      【解决方案5】:

      当您创建一个大小为 10 的数组时,它分配了 10 个插槽,但从 0 到 9。 这个 for 循环可能会帮助您更好地了解这一点。

      public class Array {
          int[] data = new int[10]; 
          /** Creates a new instance of an int Array */
          public Array() {
              for(int i = 0; i < data.length; i++) {
                  data[i] = i*10;
              }
          }
      }
      

      【讨论】:

        【解决方案6】:

        语法

         Datatype[] variable = new Datatype[] { value1,value2.... }
        
         Datatype variable[]  = new Datatype[] { value1,value2.... }
        

        例子:

        int [] points = new int[]{ 1,2,3,4 };
        

        【讨论】:

          【解决方案7】:

          你可以这样做:

          int[] data = {10,20,30,40,50,60,71,80,90,91};
          

          【讨论】:

          • 我想知道这在 5 年前接受的答案之上增加了什么价值。
          【解决方案8】:

          也许这会起作用:

          public class Array {
          
              int data[] = new int[10]; 
              /* Creates a new instance of Array */
              public Array() {
                  data= {10,20,30,40,50,60,71,80,90,91};
              }
          }
          

          【讨论】:

          • 这与问题有何不同?请扩展您的答案!
          • 构造函数中不允许使用数组初始值设定项!!!!您至少应该在发布提案之前对其进行测试...
          【解决方案9】:

          与其学非官网不如学oracle网站

          链接如下:Click here

          *您可以找到 Initialization 以及带有完整描述的声明 *

          int n; // size of array here 10
          int[] a = new int[n];
          for (int i = 0; i < a.length; i++)
          {
              a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
          }
          

          输入: 10//数组大小 10 20 30 40 50 60 71 80 90 91

          显示数据:

          for (int i = 0; i < a.length; i++) 
          {
              System.out.println(a[i] + " ");
          }
          

          输出: 10 20 30 40 50 60 71 80 90 91

          【讨论】:

          • OP 显然试图一次分配一堆值。您的回复不承认这一事实。
          【解决方案10】:

          如果你想在构造函数中初始化一个数组, 你不能像这样使用那些数组初始化器。

          data= {10,20,30,40,50,60,71,80,90,91};
          

          改成

          data = new int[] {10,20,30,40,50,60,71,80,90,91};
          

          您不必使用data[10] = new int[] { 10,...,91} 指定大小 只需使用int[] data; 声明属性/字段并像上面一样初始化它。 您的代码的更正版本如下所示:

          public class Array {
          
              int[] data;
          
              public Array() {
                  data = new int[] {10,20,30,40,50,60,71,80,90,91};
              }
          
          }
          

          如您所见,括号是空的。括号之间的大小无需说明,因为初始化及其大小由大括号之间的元素数指定。

          【讨论】:

            猜你喜欢
            • 2011-03-10
            • 2011-07-30
            • 2011-08-18
            • 1970-01-01
            • 1970-01-01
            • 2012-12-13
            • 2014-12-08
            • 1970-01-01
            相关资源
            最近更新 更多