有没有办法初始化数组中的单个元素? (JAVA)

时间:2015-07-09 17:38:46

标签: java arrays

public class Test{
    int[] array = new int[10];
    array[3] = 1;
}

这会一直给出语法错误(令牌上的语法错误“;”,{此标记后的预期)。是不可能只从数组中初始化一个元素?

2 个答案:

答案 0 :(得分:1)

问题是你的类中有顶级代码,Java中不允许这样做。你可以像这样声明和初始化变量:

public class Test{
    int[] array = new int[10]; // OK
}

但你不能执行其他陈述

public class Test{
    int[] array = new int[10];  // OK
    array[3] = 1;  // Not OK
}

您可以将初始化语句放在实例初始化程序块{}中:

public class Test{
    int[] array = new int[10];  // OK

    {
        array[3] = 1;  // OK
    }
}

...或在构造函数方法中:

public class Test{
    int[] array = new int[10];  // OK

    public Test(){
        array[3] = 1;  // OK
    }
}

答案 1 :(得分:0)

你有主要方法吗?

public static void main(String[] args){

}

如果你不需要。

  

在Java语言中,当您使用Java解释器执行类时,运行时系统首先调用类的main()方法。然后main()方法调用运行应用程序所需的所有其他方法。   如果您尝试使用没有main()方法的Java解释器运行类,则解释器会输出错误消息。

http://www.cs.princeton.edu/courses/archive/spr96/cs333/java/tutorial/java/anatomy/main.html

除了主要方法之外,您需要将该代码放在方法中,因为 在班级,只允许以下内容:

  1. 构造函数定义
  2. 方法定义
  3. 内部类定义(包括接口和枚举)
  4. 字段定义
  5. 初始化程序块(静态或动态/实例)
  6. 不允许使用语句,它们必须嵌套在其中一个语句中。

    所以

     public class Test{
        int[] array = new int[10];
        array[3] = 1;
     }
    

    没有工作,但是

    public class Test{
        int[] array = new int[10];
    
        { // this is a dynamic initializer,
          // it runs after the constructor's
          // first line
            array[3] = 1;
        }
     }
    

    意愿。但是,首选将初始化放在方法中。