我完全不知道为什么这段代码不会返回数组...我觉得我的编译器有问题:
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)
Ó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)
这将在控制台中显示该数组.
您对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
声明......
正如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)
归档时间: |
|
查看次数: |
378333 次 |
最近记录: |