2017-04-17 58 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)