2012-09-22 64 views
-3

爲什麼不能正常工作?爲什麼我們不能在Java中的main方法中實現一個方法?

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

它的缺點是「它不工作,因爲你不應該」。我不確定你要找什麼「答案」?你的意思是與課堂中的方法相對嗎?或者與另一種語言相反?或者爲什麼會這樣? – Nanne

回答

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]); 
    } 
} 
2

方法不能在裏面Java之外的方法確定。爲了編譯你的add方法必須從main方法中提取出來。

+0

爲什麼'命名方法'? AFAIK Java不支持未命名的。 – 11684

+0

哎呀,錯字,更正:) – Reimeus

1

因爲Java語言規範不允許它。

方法直接屬於一類下,並不能嵌套。

0

在java中,你必須保持方法分開。 :/抱歉

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(); 
    } 
} 

但是,必須注意的是,你的本地類將僅在定義它的範圍是可見的。它不能有修飾符:private,publicstatic

相關問題