33

このコードが配列を返さない理由がまったくわかりません...コンパイラに問題があるように感じます:

public class trial1{

    public static void main(String[] args){
        numbers();
    }

    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}

コードは何も返しません。それは私を夢中にさせています!

4

6 に答える 6

38

配列を返していますが、何か (配列を含む) を返すことはすべて、そのように聞こえます: 値を返します。あなたの場合、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]+" ");
    }
}
于 2012-10-13T03:50:03.863 に答える
14

もちろん、このメソッドnumbers()は配列を返しますが、それに対して何もしていないだけです。でこれを試してくださいmain()

int[] array = numbers();                    // obtain the array
System.out.println(Arrays.toString(array)); // now print it

これにより、コンソールに配列が表示されます。

于 2012-10-13T03:44:56.533 に答える
8

Java についていくつかの基本的な誤解があります。

コンソールに明示的に印刷するように指示しなくても、配列を返すようにしたいのです。

1) Java はそのようには機能しません。暗黙的に印刷されるものはありません。(Java は、"repl" ループを使用する対話型インタープリターをサポートしていません ... Python、Ruby などのように)

2) 「メイン」は何も「返さない」。メソッドのシグネチャは次のとおりです。

  public static void main(String[] args)

そして、void「値が返されない」という意味です。(そして、申し訳ありませんが、を他のvoidものに置き換えることはできません。置き換えた場合、javaコマンドは「メイン」メソッドを認識しません。)

3) (仮に) 「メイン」メソッドが何かを返すようにしたい場合、それを許可するように宣言を変更した場合でもreturn、ステートメントを使用してどの値を返すかを伝える必要があります。一部の言語とは異なり、Java はメソッドの最後のステートメントの値をメソッドの戻り値として扱いません。ステートメント使用する必要があります...return

于 2012-10-13T03:55:41.533 に答える
7

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;
    }
}
于 2012-10-13T03:46:43.627 に答える
1

メソッドを使用する場合はnumbers、戻り値を格納するための int 配列が必要です。

public static void main(String[] args){
    int[] someNumbers = numbers();
    //do whatever you want with them...
    System.out.println(Arrays.toString(someNumbers));
}
于 2012-10-13T03:46:34.590 に答える
1

戻り値で何かをする必要があります...

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;
    }
}
于 2012-10-13T03:47:37.023 に答える