2011-09-19 92 views
-4

我寫了這個類(打印數組列表),並在其中我在main功能上進行的方法..不能在主要方法中聲明方法嗎?

那麼它不工作:我做了功能static,並在main方法中聲明它,仍然沒有奏效。在主要方法中,我沒有訪問說明符的功能:仍然沒有工作。

難道你不能在main方法中聲明方法嗎?

沒有任何方法可以在main方法內聲明一個方法(除了在主方法外部使其成爲公共靜態方法)嗎?

public class TestArrays { 


    public static void main(String[] args) { 
    // Step 1 & 2: declare/initialize array variables 
    int[] array1 = { 2, 3, 5, 7, 11, 13, 17, 19 }; 
    int[] array2; 

    // Step 3: display array1 with initial values 
     System.out.print("array1 is "); 
    printArray(array1); 
    System.out.println(); 

    // Step 4: make array2 refer to array1 
    array2 = array1; 
    // modify array2 
    array2[0] = 0; 
    array2[2] = 2; 
    array2[4] = 4; 
    array2[6] = 6; 
    // print array 1 
    System.out.print("array1 is "); 
    printArray(array1); 
    System.out.println(); 


    static void printArray(int[] array) { 
    System.out.print('<'); 
    for (int i:array) { 
     // print an element 
     System.out.print(i); 
     // print a comma delimiter if not the last element 

     } 
     System.out.print('>'); 
    } 
    } 

回答

9

不,你不能(直接*)內Java中的其他方法定義的方法(和main方法沒有特殊情況在這裏)。

想要什麼做的是把方法相同類爲main。如果main需要調用它而不創建該類的實例,則它需要爲static,但不一定是public

但是,您可以用另一種方法內的方法聲明一個匿名內部類。

0

你不能在java中這樣做。 java使用類,它們封裝了一切,甚至是主要的方法 - 你把方法放在類中。

0

試試這個代碼我認爲。它可能工作。

package practice; 

class MyThreads extends Thread 

{ 
    MyThreads() 
    { 
     System.out.print(" MyThreads"); 
    } 
    public void run() 
    { 
     System.out.print(" bar"); 
    } 
    public void run(String s) 
    { 
     System.out.println(" baz"); 
    } 
} 
public class TestThread 
{ 
    public static void main (String [] args) 
    { 
     Thread t = new MyThreads() 
     { 
      public void run() 
      { 
       System.out.println(" foo"); 
      } 
     }; 
     t.start(); 
     System.out.println("out of run"); 
    } 
} 
0

在方法/塊中定義的任何功能都無法在其外訪問。

因爲我們知道該特徵的範圍在塊/方法的結尾處​​結束。

所以沒有外部(外部方法)使用它。

爲如:

class Demo 

{ 

     public static void main(String args[]) 

     { 

     for(int i=0;i<10;i++) //for block 

     { 

      //..... 

     } 

     //outside of for loop 

     System.out.println(i); // i can't be find symbol 

     int sum() 

     { 

      int k=5; 

     } 

     //outside of sum() 

     System.out.println(k); //won't get it. 
    } 

} 

我認爲這是correct.otherwise指正。

相關問題