非法阵列初始化? (JAVA)

时间:2016-01-27 11:36:10

标签: java arrays

public class My {
    float[] arr=new float[]{0.1f,0.2f};

    arr[0]=0.2f;

    public static void main(String []args) {
        My my= new My();
        System.out.println(my.arr[0]);
    }
}

我收到了错误:

My.java: 4 : error: ']' expected

arr[0]=0.2f;

^
My.java: 4 : error: ';' expected

arr[0]=0.2f;

^

My.java: 4 : error: illegal start of type

arr[0]=0.2f;

^
My.java: 4 : error: <identifier> expected

arr[0]=0.2f;

^

有没有办法使用arr[0]=somevalue;?就像他们在C中做的那样?

3 个答案:

答案 0 :(得分:4)

您可以修复arr的初始值设定项,以便从头开始保持正确的值

float[] arr=new float[]{0.2f,0.2f};

或者您可以更改类以更改构造函数中的值:

public class My {
    float[] arr=new float[]{0.1f,0.2f};

    public My() {
        arr[0]=0.2f;
    }

    ...
}

答案 1 :(得分:1)

block or function内声明数组,而不使用Array as field

public class My{

    public static void main(String[] args) {
        float[] arr = new float[] { 0.1f, 0.2f };
        arr[0] = 0.2f;
        //My my = new My();
        System.out.println(arr[0]);
    }
}

使用构造函数

作为字段的数组
public class My{

    private float[] arr = null;

    private My() {
        arr = new float[] { 0.1f, 0.2f };
    }

    public static void main(String[] args) {
        My my = new My();
        System.out.println(my.arr[0]);
    }
}

答案 2 :(得分:1)

您可以修复arr值的初始化程序并在类中声明数组。

public class My
{
    public static void main( String[] args )
    {
        My my = new My();
        System.out.println( my.arr[0] );
    }
    private float[] arr = new float[]
                        { 0.1f, 0.2f };
}