Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回Java中的数组_Java - Fatal编程技术网

返回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)