无法对非静态字段值进行静态引用

时间:2014-05-21 23:48:54

标签: java reference static field

我是编程新手,我只想尝试使用数组。我正在制作我想在数组上使用的方法,但是当我尝试通过这些方法传递实际数组时,我在标题中得到错误。我究竟做错了什么?

public class ArrayPractice extends Arrays
{
    double[] values = new double[11];

    public static void main(String[] args)
    {
        //when methods are created run them each once for the array we created and     then print out the result.
        fillArray(values);
        firstLastSwap(values);
        System.out.println(values);

    }


    public void fillArray(double[] array)
    {
        for(int i=0; i<array.length; i++)
        {
            values[i] = Math.random();
        }
    }

    public void firstLastSwap(double[] array)
    {
        double tempOne = array[0];
        double tempTwo = array[array.length-1];
        for(int i=0; i<array.length; i++)
        {
            if(i == array[0])
            {
                array[i] = tempTwo;
            }
            else if(i == array[array.length-1])
            {
                array[i] = tempOne;
            }
        }
    }

    public void shiftElementsLeft(double[] array)
    {

    }

    public void evenElementsToZero(double[] array)
    {

    }

    public void replaceWithBigNeighbor(double[] array)
    {

    }



}

2 个答案:

答案 0 :(得分:0)

放置关键字&#34; static&#34;在你的全局变量前面:

static double [] values = new double [11];

Main()是一个静态方法,它只能使用静态字段或在其中定义的变量。

答案 1 :(得分:0)

选项1 。使您在main()方法中访问的方法是静态的。

选项2:在main()方法中创建类的实例,并使用实例访问非静态方法

ArrayPractice AP = new ArrayPractice();
AP. fillArray(values);