2016-11-19 2 views
0

Ich bin neu in Java. Ich möchte den Index des letzten Vorkommens in einem Array unter Verwendung der Schleife erhalten. Ich verstehe jedoch nicht, warum ich nicht kann.Finden Sie das letzte Vorkommen eines Arrays Java?

Dies ist das Array: {2, 3, 4, 5, 4, 5, 3}

Ich möchte den Index der letzten 4 in sie erhalten.

Mein Code ist:

public static void main(String args[]){ 
    int[] nums = {2, 3, 4, 5, 4, 5, 3}; 

    int pos4 = 0; 
    for (int k = nums.length -1; k >= 0; k--){ 
     if (nums[k] == 4){ 
      pos4 = k; 
      break; 
     } 
    System.out.print(pos4); 
    } 
} 

Das Ergebnis ist: 00 ??

Wenn ich ändern:

public static void main(String args[]){ 
    int[] nums = {2, 3, 4, 5, 4, 5, 3}; 

    int pos4 = 0; 
    for (int k = nums.length -1; k >= 0; k--){ 
     if (nums[k] == 4){ 
      break; 
     } 
    System.out.print(k); 
    } 
} 

Ich habe 65 ???

Allerdings, wenn ich direkt von der Schleife drucken bekomme ich den Index korrekt:

public static void main(String args[]){ 
    int[] nums = {2, 3, 4, 5, 4, 5, 3}; 

    int pos4 = 0; 
    for (int k = nums.length -1; k >= 0; k--){ 
     if (nums[k] == 4){ 
      System.out.print(k); 
      break; 
     } 
    } 
} 

Kann mir jemand sagen, warum? Danke vielmals!

+3

Willkommen bei Stack Overflow! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach noch Probleme haben, können Sie gerne weitere Einzelheiten erfahren. –

Antwort

3

Ihr erstes Beispiel ist das Drucken innerhalb der Schleife. Sobald die Bedingung erfüllt war, haben Sie die Schleife verlassen und nie den endgültigen Wert ausgedruckt.

public static void main(String args[]){ 
    int[] nums = {2, 3, 4, 5, 4, 5, 3}; 

    int pos4 = 0; 
    for (int k = nums.length -1; k >= 0; k--) { 
     if (nums[k] == 4){ 
      pos4 = k; 
      break; 
     }   
    } 
    System.out.print(pos4); // moved outside of loop to print final value 
} 
+0

Verstanden! Vielen Dank!! –

3

Wie wäre es mit vorhandenen Methoden, und nicht das Rad neu erfinden? diese Einzeiler löst das Problem:

Integer[] array = { 2, 3, 4, 5, 4, 5, 3 }; 
int idx = Arrays.asList(array).lastIndexOf(4); 
0

Ihre print-Anweisung innerhalb der Schleife ist. So druckt es zweimal 0, dann, wenn das Ergebnis gefunden wird, die Pause; überspringt es. Versuchen Sie dies ...

int pos4 = 0; 
for (int k = nums.length - 1; k >= 0; k--) { 
    if (nums[k] == 4) { 
     pos4 = k; 
     break; 
    } 
} 
System.out.print(pos4); // <== after loop 
Verwandte Themen