我完全不知道为什么这段代码不会返回一个数组......我觉得我的编译器有问题:
public class trial1{
public static void main(String[] args){
numbers();
}
public static int[] numbers(){
int[] A = {1,2,3};
return A;
}
}
该代码根本不返回任何内容。这让我疯狂!
我完全不知道为什么这段代码不会返回一个数组......我觉得我的编译器有问题:
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<result.length; i++) {
System.out.print(result[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
命令将无法识别“main”方法。)
3)如果(假设地)你确实希望你的“main”方法返回一些东西,并且你改变了声明以允许它,那么你仍然需要使用一个return
语句来告诉它返回什么值。与某些语言不同,Java 不会将方法的最后一条语句的值视为该方法的返回值。您必须使用return
声明...
正如 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;
}
}
如果要使用该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;
}
}