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