2017-04-17 8 views
1

Hier bin ich erhalte eine FehlermeldungLinkslauf mit Hilfe von Java

Es kann keine statische Verweis auf die nicht-statische Methode leftRotatebyOne machen (int [], int) vom Typ LeftRotation

Hier ist mein Code ..

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

Kann mir jemand sagen, um mich weiter zu machen.

+0

Ändern 'Hohlraum leftRotatebyOne (int arr [], int n)' auf 'static void leftRotatebyOne (int arr [], int n) ' –

+0

Das nächste Mal bitte den Stacktrace oder zumindest einen Teil davon. Hier war es leicht abzuleiten, was das Problem war, aber normalerweise ist es das nicht, also würden die Leute dich sowieso nach einem vollständigen Fehler fragen. :) –

+0

Ich habe versucht, es betrifft die arrayLeftRotation (int [] arr, int n, int k) -Methode, um ein Ergebnis des Typs int [] –

Antwort

3

Im Hauptmethode arrayLeftRotation Methode aufrufen (die statisch ist), welche wiederum leftRotatebyOne Aufruf hier leftRotatebyOne ist nicht statische Methode, die durch eine statische Methode aufgerufen wird, die in Java nicht erlaubt ist.

Ändern der Erklärung des Verfahrens leftRotatebyOne statischen wie folgt

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