Java 如何从main中的方法打印数组?

Java 如何从main中的方法打印数组?,java,Java,我创建了一个用素数填充数组的方法。但是,我很难理解在它被填充到打印它的主方法之后,我如何返回它?这样返回给我一个错误,它找不到这样的符号 public static int[] fillArray(int a){ int[] arr = new int[a]; int m = 0; for (int i = 1; m < arr.length; i++){ if (isPrime(i)){

我创建了一个用素数填充数组的方法。但是,我很难理解在它被填充到打印它的主方法之后,我如何返回它?这样返回给我一个错误,它找不到这样的符号

public static int[] fillArray(int a){
        int[] arr = new int[a];
        int m = 0;
        for (int i = 1; m < arr.length; i++){
            if (isPrime(i)){
                arr[m] = i;
                m++;
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int a = Integer.parseInt(args[0]);
        System.out.println(arr);
    }


公共静态int[]填充数组(int a){
int[]arr=新的int[a];
int m=0;
对于(int i=1;m
公共静态int[]填充数组(int a){
int[]arr=新的int[a];
int m=0;
对于(int i=1;m

在这里了解有关调用方法的更多信息:

我建议,您可以执行以下操作:

public static int[] fillArray(int a){
    int[] arr = new int[a];
    int m = 0;
    for (int i = 1; m < arr.length; i++){
        if (isPrime(i)){
            arr[m] = i;
            m++;
        }
    }
    return arr;
}

public static void main(String[] args) {
    int a = Integer.parseInt("5"); //Pass a hard coded value or Read it from Scanner class and pass the same as argument
    int[] arr = fillArray(a);
    System.out.println(arr); //This line not actually prints the values of array instead it prints the Object representation of the array

   // Below small piece of code will print the values of the array
    for(int val:arr){
         System.out.println(val);
     }

}
公共静态int[]填充数组(int a){
int[]arr=新的int[a];
int m=0;
对于(int i=1;m
您需要从
main
调用
fillArray
方法并捕获其返回值。您需要将arr作为类内的全局变量,如
static int[]arr之后,您需要在main中调用
arr=fillArray(a)
打印该数组之前。在main方法中声明一个数组(类似于fillArray方法中的数组),并将该方法的返回数据放到main方法中的数组中,然后可以轻松打印它
arr
fillArray
方法的局部变量。因为每次调用方法时,都会为每次调用生成新变量
arr
,因此不可能从其他地方访问它,因为我们不知道(1)方法是否被调用,所以如果
arr
在当时实际存在(2)如果方法被多次调用,在这种情况下,您希望访问哪个
arr
值?相反,您应该调用类似于
fillArray(5)
的方法,并将其结果数组(由
arr
持有的返回数组)存储在调用它的位置(此处来自
main
方法),如
int[]primes=fillArray(5)我相信您的代码将为行“int a=Integer.parseInt(args[0]);”提供ArrayIndexOutOfBoundsException,因为没有可从args变量获取的值。我测试了你的代码,它给出了一个异常。如果我错了,请纠正我,
System.out.println(arr)
也没有给出可用的结果。与@Spectric的评论相关:
public static int[] fillArray(int a){
    int[] arr = new int[a];
    int m = 0;
    for (int i = 1; m < arr.length; i++){
        if (isPrime(i)){
            arr[m] = i;
            m++;
        }
    }
    return arr;
}

public static void main(String[] args) {
    int a = Integer.parseInt("5"); //Pass a hard coded value or Read it from Scanner class and pass the same as argument
    int[] arr = fillArray(a);
    System.out.println(arr); //This line not actually prints the values of array instead it prints the Object representation of the array

   // Below small piece of code will print the values of the array
    for(int val:arr){
         System.out.println(val);
     }

}