在Java中返回数组

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

public class trial1{ public static void main(String[] args){ numbers(); } public static int[] numbers(){ int[] A = {1,2,3}; return A; } } 

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

它返回数组,但所有返回的东西(包括一个数组)都是听起来的样子:返回值。 在你的情况下,你得到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 

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

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

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

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

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

1)Java不能那样工作。 什么都没有被隐含地打印出来。 (Java不支持带有“repl”循环的交互式解释器……如Python,Ruby等)

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

  public static void main(String[] args) 

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

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

正如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; } } 

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

 public static void main(String[] args){ int[] someNumbers = numbers(); //do whatever you want with them... System.out.println(Arrays.toString(someNumbers)); } 

你需要用返回值做一些事……

 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; } }