返回Java中的数组
我完全不知道为什么这段代码不会返回数组。。。我觉得我的编译器有问题:返回Java中的数组,java,Java,我完全不知道为什么这段代码不会返回数组。。。我觉得我的编译器有问题: public class trial1{ public static void main(String[] args){ numbers(); } public static int[] numbers(){ int[] A = {1,2,3}; return A; } } 代码完全不返回任何内容。这快把我逼疯了 当然,方法numbers()
public class trial1{
public static void main(String[] args){
numbers();
}
public static int[] numbers(){
int[] A = {1,2,3};
return A;
}
}
代码完全不返回任何内容。这快把我逼疯了 当然,方法
numbers()
返回一个数组,只是您没有对它做任何操作。在main()中尝试以下操作:
这将在控制台中显示阵列 如果要使用numbers
方法,则需要一个int数组来存储返回值
public static void main(String[] args){
int[] someNumbers = numbers();
//do whatever you want with them...
System.out.println(Arrays.toString(someNumbers));
}
正如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;
}
}
您需要对返回值执行一些操作
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;
}
}
它返回数组,但所有返回的东西(包括数组)都是它听起来的样子:返回值。在您的例子中,您得到的是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]+" ");
}
}
publicstaticvoidmain(字符串[]args){
int[]结果=数字();
对于(inti=0;i,您对Java有一些基本的误解:
我希望它返回数组,而不必显式地告诉控制台打印
1) Java不是这样工作的。任何东西都不会隐式打印(Java不支持带有“repl”循环的交互式解释器…如Python、Ruby等)
2) “main”不“返回”任何内容。方法签名为:
public static void main(String[] args)
void
表示“不返回任何值”。(并且,很抱歉,不,您不能用其他内容替换void
。如果这样做,java
命令将无法识别“main”方法。)
3) 如果(假设)你真的想要你的“主”方法返回某个值,并且您更改了声明以允许返回该值,那么您仍然需要使用return
语句来告诉它要返回的值。与某些语言不同,Java不将方法的最后一条语句的值作为方法的返回值。您必须使用return
语句。。。numbers
方法返回int数组,但是你对返回的数组不做任何操作。你期望什么,一种神奇的力量会在控制台中打印数组?我在我的主方法中运行它。我以为这会返回数组。当你得到数组时,你对数组不做任何操作……但它会以y的形式返回数组只需在main
中添加int[]array=numbers();
并打印此array
variable他可能熟悉Python或其他东西,如果您要键入“myVariable”它会自动打印变量的内容,不管它是什么类型。实际上,这仍然没有任何作用…我希望它返回数组,而不必显式地告诉控制台打印main calls numbers()方法和数字创建一个数组,然后它将该数组返回主数组并将其分配给A。没有打印?没有,你是对的,只是为什么根本没有输出?啊,对不起,你是想打印的。使用Luiggi方法调用数组。toString()方法将接收数组并将其转换为字符串对象,然后您可以使用System.out.println();方法将其打印出来。更新了我的代码帖子。我需要将该方法保留为返回双精度[]的方法,是否可以不单独打印出实际的条目?当然可以;打印出单独的条目只是一个使用返回值的示例。要点是,当您调用返回某个值的函数时,您需要实际使用该返回值执行某些操作(例如:打印它,存储它以备以后使用,将它传递给另一个函数…)好吧,我想我明白了,返回一个int或字符串(例如字符串)实际上会输出int或String,这对您来说只是Java。在一些语言中(主要是交互式语言),您只需键入函数或变量名称,然后将值打印到标准输出。在Java(以及许多类似的语言)中,没有任何内容是隐式打印的或外部使用的(正如@Stephen C所说);您需要自己处理每个值。“好吧,我想我明白了,只是奇怪的是,返回一个int,或字符串,实际上会输出int,或字符串”-实际上,它不会输出它们。至少它不会这样做,除非你明确告诉它。万一有人想知道,System.out.println(array.toString());
不起作用。它返回地址。@Dimenein不,这不会以有用的方式打印数组。试试看,你就会明白我的意思;)是的,我刚刚编辑了它,我的错
public static void main(String[] args)