我想知道为什么会出现这些错误以及如何解决:
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]);
}
}
}
答案 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。