为什么我需要.class来调用方法?

时间:2019-06-02 03:53:53

标签: java

我想知道为什么会出现这些错误以及如何解决:

Main.java:12: error: '.class' expected
        populateArray(int[] aRand);
                            ^
Main.java:12: error: ';' expected
        populateArray(int[] aRand);

我得到的指示在注释中,我只是遵循我认为指示的含义。我以为也许我应该在主要方法中使用populateArray();,但它与public void populateArray(int[] array){}的签名不匹配。

import java.util.Random;

public class Main {
    public static void main(String args[])
    {
    /*
    (a) Create an array of integers called aRand of capacity 20 and initialize its entries to 0. 
    */
        int aRand[] = new int[20];

        populateArray(int[] aRand);

    }

    /*
    (b) Populate the array in a method called populateArray(int[] array) where array is the one you want to populate. 
    This method returns void. 
    */
        public void populateArray(int[] array){
          Random rand = new Random();
          for (int i=0; i<array.length; i++){
            array[i] = rand.nextInt();
            System.out.println(array[i]);
          }
        }
}

1 个答案:

答案 0 :(得分:0)

几件事!

首先,您已经将populateArray声明为采用int[]的方法,因此在实际调用该方法时不需要这样做。

第二,您不能从静态上下文中调用非静态方法。由于您的main方法是静态的,因此您无法在其中调用非静态方法populateArray。为了您的目的,只需将populateArray声明为静态方法就可以了。

import java.util.Random;

public class Main {
    public static void main(String args[])
    {
    /*
    (a) Create an array of integers called aRand of capacity 20 and initialize its entries to 0. 
    */
        int aRand[] = new int[20];

        populateArray(aRand); // We already know aRand is an int[]

    }

    /*
    (b) Populate the array in a method called populateArray(int[] array) where array is the one you want to populate. 
    This method returns void. 
    */
    public static void populateArray(int[] array){
        Random rand = new Random();
        for (int i=0; i<array.length; i++){
            array[i] = rand.nextInt();
            System.out.println(array[i]);
        }
    }
}

作为参考,这是一个有用的StackOverflow答案,其中讨论了何时应使用静态方法与实例方法:Java: when to use static methods