在Java中返回数组

Atr*_*eyu 30 java

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

public class trial1{

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

    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*xFZ 34

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

当一个函数返回任何东西时,它实际上是numbers();用返回值替换它所调用的行(在你的情况下:).那么,您的main方法实际执行的主要是以下内容:

public static void main(String[] args) {
    {1,2,3};
}
Run Code Online (Sandbox Code Playgroud)

当然,这似乎什么都不做.如果你想对返回值做一些事情,你可以这样做:

public static void main(String[] args){
    int[] result = numbers();
    for (int i=0; i<result.length; i++) {
        System.out.print(result[i]+" ");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • “好吧,我想我明白了,返回一个int或String这样的东西实际上会输出这个int或字符串,这很奇怪。”-实际上,它不会输出它们。除非您明确告知,否则至少不会这样做。 (2认同)

Ósc*_*pez 13

当然该方法numbers()返回一个数组,只是你没有做任何事情.试试这个main():

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

这将在控制台中显示该数组.


Ste*_*n C 8

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

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

1)Java不起作用.什么都没有被隐含地打印出来.(Java不支持带有"repl"循环的交互式解释器......如Python,Ruby等)

2)"主要"不会"返回"任何东西.方法签名是:

  public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)

并且void意味着"没有价值归还".(而且,对不起,不,你不能void用别的东西替换.如果你这样做,那么java命令将无法识别"主"方法.)

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


Kai*_*ran 7

正如Luiggi所说,你需要将你的主要内容改为:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)