33

我完全不知道为什么这段代码不会返回一个数组......我觉得我的编译器有问题:

public class trial1{

    public static void main(String[] args){
        numbers();
    }

    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}

该代码根本不返回任何内容。这让我疯狂!

4

6 回答 6

38

它正在返回数组,但所有返回的东西(包括数组)所做的就是它听起来的样子:返回值。在你的情况下,你得到的值numbers()恰好是一个数组(它可以是任何东西,你仍然会遇到这个问题),然后让它坐在那里。

当一个函数返回任何东西时,它本质上是用返回值替换调用它的行(在你的情况下numbers();:)。因此,您的main方法真正执行的内容基本上如下:

public static void main(String[] args) {
    {1,2,3};
}

当然,这似乎无济于事。如果你想对返回值做一些事情,你可以这样做:

public static void main(String[] args){
    int[] result = numbers();
    for (int i=0; i<result.length; i++) {
        System.out.print(result[i]+" ");
    }
}
于 2012-10-13T03:50:03.863 回答
14

当然,该方法numbers()返回一个数组,只是你什么都不做。试试这个main()

int[] array = numbers();                    // obtain the array
System.out.println(Arrays.toString(array)); // now print it

这将在控制台中显示数组。

于 2012-10-13T03:44:56.533 回答
8

你对 Java 有几个基本的误解:

我希望它返回数组而不必明确告诉控制台打印。

1) Java 不能那样工作。没有任何东西被隐式打印出来。(Java 不支持带有“repl”循环的交互式解释器……比如 Python、Ruby 等)

2)“主要”不会“返回”任何东西。方法签名是:

  public static void main(String[] args)

并且void意味着“不返回任何值”。(而且,对不起,不,你不能void用其他东西替换。如果你这样做,那么java命令将无法识别“main”方法。)

3)如果(假设地)你确实希望你的“main”方法返回一些东西,并且你改变了声明以允许它,那么你仍然需要使用一个return语句来告诉它返回什么值。与某些语言不同,Java 不会将方法的最后一条语句的值视为该方法的返回值。您必须使用return声明...

于 2012-10-13T03:55:41.533 回答
7

正如 Luiggi 提到的,您需要将 main 更改为:

import java.util.Arrays;

public class trial1{

    public static void main(String[] args){
        int[] A = numbers();
        System.out.println(Arrays.toString(A)); //Might require import of util.Arrays
    }

    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}
于 2012-10-13T03:46:43.627 回答
1

如果要使用该numbers方法,则需要一个 int 数组来存储返回值。

public static void main(String[] args){
    int[] someNumbers = numbers();
    //do whatever you want with them...
    System.out.println(Arrays.toString(someNumbers));
}
于 2012-10-13T03:46:34.590 回答
1

你需要对返回值做一些事情......

import java.util.Arrays;

public class trial1{

    public static void main(String[] args){
        int[] B = numbers();
        System.out.println(Arrays.toString(B));
    }

    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}
于 2012-10-13T03:47:37.023 回答