2017-04-17 59 views
1

在這裏,我得到一個錯誤左旋轉使用Java

不能使從類型LeftRotation的靜態引用非靜態方法leftRotatebyOne(INT [],INT)

這裏是我的代碼..

public static int[] arrayLeftRotation(int[] arr, int n, int k) 
{ 
int i; 
for (i = 0; i < k; i++) 
    leftRotatebyOne(arr, n); 
} 

void leftRotatebyOne(int arr[], int n) 
{ 
    int i, temp; 
    temp = arr[0]; 
    for (i = 0; i < n - 1; i++) 
     arr[i] = arr[i + 1]; 
    arr[i] = temp; 
} 

public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 
    int n = in.nextInt(); 
    int k = in.nextInt(); 
    int a[] = new int[n]; 
    for(int a_i=0; a_i < n; a_i++) 
    { 
     a[a_i] = in.nextInt(); 
    } 

    int[] output = new int[n]; 
    output = arrayLeftRotation(a, n, k); 

    for(int i = 0; i < n; i++) 
     System.out.print(output[i] + " "); 
} 

誰能告訴進一步進行我。

+0

變化'空隙leftRotatebyOne(INT ARR [],INT N)'到'靜態無效leftRotatebyOne(INT ARR [],整數Ñ )' –

+0

下次請包括堆棧跟蹤或至少其中的一部分。在這裏很容易推斷出問題所在,但通常情況並非如此,因此無論如何人們會問你一個完整的錯誤。 :) –

+0

我試過了,它會影響arrayLeftRotation(int [] arr,int n,int k)方法使返回結果爲int [] –

回答

3

在您所呼叫arrayLeftRotation方法(它是靜態的),這又是調用leftRotatebyOne的主要方法,這裏leftRotatebyOne是非靜態的方法,它正在通過其Java不允許一個靜態方法調用。

更改方法leftRotatebyOne的靜態的聲明如下

static void leftRotatebyOne(int arr[], int n)