2016-05-13 59 views
0

大家晚上好。我正在通過這種方式工作,並且在另一個班級中使用班級時遇到了阻礙。 Eclipse會告訴我這個錯誤是因爲試圖調用對一個非靜態方法的靜態引用。 我想要做的就是在一個程序中多次使用「反向」方法。我知道問題出現在「反向」類中,並且正在尋找正確的方式來格式化該類,以接受來自主方法中代碼的輸入。調用數組運算符

public static void main (String [] args){ 
     //creating a test array 
     int [] myArray = {0, 1, 2, 3, 4, 5, 6,7 ,8 ,9}; 
     int [] myArrRev = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 
     reverse (myArray); 
     if (Arrays.equals(myArray, myArrRev)) 
     System.out.println("reverse worked for 10 elements."); 


     int [] myArray2 = {0, 1, 2, 3, 4, 5, 6,7 ,8}; 
     int [] myArrRev2 = { 8, 7, 6, 5, 4, 3, 2, 1, 0}; 
     reverse (myArray2); 
     if (Arrays.equals(myArray2, myArrRev2)) 
     System.out.println("reverse worked for 9 elements."); 


     int [] myArray3 = {0}; 
     int [] myArrRev3 = {0}; 
     reverse (myArray3); 
     if (Arrays.equals(myArray3, myArrRev3)) 
     System.out.println("reverse worked for 1 element."); 

     int [] myArray4 = {}; 
     int [] myArrRev4 = {}; 
     reverse (myArray4); 
     if (Arrays.equals(myArray4, myArrRev4)) 
     System.out.println("reverse worked for 0 elements."); 
    } 




    void reverse(int arr[]){ 
     for(int i = 0; i < arr.length/2; i++) 
     { 
     int temp = arr[i]; 
     arr[i] = arr[arr.length - i - 1]; 
     arr[arr.length - i - 1] = temp; 
     } 
    } 


} 

回答

2

變化的方法聲明:

static void reverse(int arr[]) 
+0

是有辦法做到這一點不使其靜態的?我試圖從主要方法中刪除「靜態」,但顯然不會工作。 –

+0

@JWelch使它成爲'static'有什麼問題?但是,您可以創建您的類的實例,然後使用該實例調用非靜態方法。但爲什麼?那有什麼意義呢?該方法不使用該類的任何*字段,爲什麼? – Andreas