-4

なぜこれが機能しないのですか?

public class AddArray
{
    public static void main(String[] args) 
    {

        int[] x = {1,2,3};
        int[] y = {1,2,3};

        dd(x,y);

        public static void add(int[]a, int[]b)
        {
            int[] sum = new int[a.length];
            for (int i=0; i<a.length; i++)
                sum[i] = a[i] + b[i];
            for (int i=0; i<a.length; i++)
                System.out.println(sum[i]);
        }
    }
}
4

5 に答える 5

8

Java では、別のメソッド内にメソッドを定義することはできません。特に、メソッド内でメソッドを定義することはできませんmain

あなたの場合、次のように書くことができます:

public class AddArray {

    public static void main(String[] args) {

        int[] x = {1,2,3};
        int[] y = {1,2,3};

        add (x,y);
    }

    private static void add (int[] a, int[] b) {
        int[] sum = new int[a.length];
        for (int i = 0; i < a.length; i++)
            sum[i] = a[i] + b[i];
        for (int i = 0; i < a.length; i++)
            System.out.println(sum[i]);
    }
}
于 2012-09-22T20:34:25.443 に答える
4

Java はネストされた関数をサポートしていません。しかし、問題は、なぜそれが必要なのですか?? ネストされたメソッドが本当に必要な状況がある場合は、local class.

次のようになります。

public class Outer {
    public void methodA() {
         int someVar = 5;

         class LocalClass {
              public void methodB() {
                   /* This can satisfy your need of nested method */
              }
         }

         // You cannot do this instantiation before the declaration of class
         // This is due to sequential execution of your method..

         LocalClass lclassOb = new LocalClass();
         lclassOb.methodB();
    }
}

ただし、ローカル クラスは、それが定義されているスコープでのみ表示されることに注意してください。修飾子を含めることはできません: privatepublic、またはstatic

于 2012-09-22T20:51:29.193 に答える
2

メソッドは、Java の他のメソッド内で定義できません。これをコンパイルするaddには、メソッドをメソッドから抽出する必要がありmainます。

于 2012-09-22T20:35:16.877 に答える
1

Java 言語仕様で許可されていないためです。

メソッドはクラスの直下に属し、入れ子にすることはできません。

于 2012-09-22T20:35:28.287 に答える
0

Java では、メソッドを分離しておく必要があります。:/ ごめん

于 2012-09-22T20:36:01.663 に答える