2016-04-23 8 views
-1

Ich habe eine einfache Tatsache App, die eine Reihe von verschiedenen Fakten hat. Ich habe eine nächste, vorherige und Home-Taste. Wenn die Home-Taste gedrückt wird, möchte ich, dass die erste Tatsache erneut angezeigt wird, und danach wird sie vom ersten Array-Wert an wieder inkrementiert.Array nicht ordnungsgemäß looping Java

Mein Home-Button funktioniert nicht. Wenn ich den nächsten Knopf 5 Mal drücke, dann drücke den Home-Knopf, ich werde zum ersten Fakt geleitet, aber wenn ich den nächsten Knopf drücke, dann wird der 6. Fakt angezeigt, nicht der zweite.

Hier ist mein Code:

public String nextFact() { 
     i++; 
     if(i >= facts.length) { 
      i = 0; 
     } 

     return facts[i]; 
    } 


    public String previousFact() { 
     i--; 
     if(i < 0) { 
      i = facts.length - 1; 
     } 
     return facts[i]; 
    } 

    public String homeButton() { 
     int i = 0; 
     return facts[i]; 
    } 
+0

Woher kommt 'i'? Wenn es ein Teil der Klasse ist, benutze 'this.i'. Andernfalls übergeben Sie als Argument. – cst1992

Antwort

4

Sie sind eine neue lokale Version von i erklärt. es sein sollte:

public String homeButton() { 
     i = 0; 
     return facts[i]; 
    } 
-1

nach Ihren Code, ich gehe ich davon ist eine Variable, über die drei Methoden geteilt, die Spur des Index der Frage hält aktuell angezeigt. Wenn dies der Fall ist, sollte Ihre Methode das Klassenmitglied i auf 0 zurücksetzen, anstatt eine lokale Variable zu erstellen.

public String homeButton() { 
    i = 0; 
    return facts[i]; 
} 

Dies sollte den Trick tun.