2016-04-30 7 views
0

Eigentlich möchte ich das erste Element der Arraylist in Textfeld1 und sein nächstes Element in Textfeld2 anzeigen. Ich möchte, dass es sich dreht, wenn ich den Knopf drücke. Das Problem ist, dass es hält das letzte Element in beiden Textfeldern zeigtArraylist Elemente im Textfeld drucken

public class Teams 
{ 
    String[] P={"Hi","there","you"}; 
} 

Teams tm=new Teams(); 
for(int j=0;j<=tm.P.length; j++){ 
    textfield1.setText(tm.P[j]); 
    textfield2.setText(tm.P[j+1]); 
} 
+0

Abgesehen, dass Ihre Frage unklar ist, wird dieser Code nicht einmal kompilieren. –

+0

Geben Sie den vollständigen Code ein. Warum willst du ganze Liste/Array iterieren? – Rehman

+0

Was ist die Klasse 'Teams' und was ist' Teams.P'? – Blip

Antwort

0

Sie können eine zusätzliche Prüfung durchführen (If-Else). Wenn textfield1 Text ist gleich dem Array [1] dann tun swapping. Wenn es da sein wird. Es wird es tauschen. Wenn nicht, dann wird diese If-Prüfung ignoriert.

Dies ist die Antwort, was ich bisher Ihre Frage verstand.

0

Von dem, was ich aus dem Code erhalten:

public class Teams{ 
    String[] P={"Hi","there","you"}; 
} 

Eine andere Klasse

//Inside some function in another class 
Teams tm=new Teams(); 
for(int j=0;j<=tm.P.length; j++){ 
    textfield1.setText(tm.P[j]); 
    textfield2.setText(tm.P[j+1]); 
} 

Die Variable P in Klasse Teams Länge 3. So im Code-Schnipsel unter dem Wert von j Änderungen von 0 bis 3. In dem Fall, wenn der Wert j 2 ist, wird die Zeile

textfield2.setText(tm.P[j+1]); 

sollte ArrayIndexOutOfBoundsException als Index j+1 werfen, d. H. 3 existiert nicht für P.

Auch wenn der Wert von P 3 sowohl die Linien

textfield1.setText(tm.P[j]); 
textfield2.setText(tm.P[j+1]); 

sollte ein ArrayIndexOutOfBoundsException als Index der P 3 für die erste Zeile und 4 für die zweite Zeile werfen.

Jetzt, da Sie deutlich in Ihren Kommentaren angegeben haben, dass keine Ausnahme geworfen wird, fühle ich, dass dieser Code in einem try - catch Block sein muss, der Exception Objekte fängt. Auch dies sollte erklären, warum diese Art von Verhalten den letzten Wert von P in beiden Textfeldern zeigt.

Wenn j 1, textfield2.setText(tm.P[j+1]) ist, wird der Text in diesem Feld auf das letzte Element "you" gesetzt. Jetzt in der nächsten Schleife, wenn j den Wert 2 erreicht, wird das erste Textfeld textfield2 auf das letzte Element "you" gesetzt. Aber in der nächsten Zeile wird eine Ausnahme ausgelöst, so dass die Zeile nicht ausgeführt wird, so dass der Text textfield2 zu you bleibt.

schließlich, wenn j 3 ist die erste Zeile selbst wirft die Ausnahme, so dass der Code nach der ersten Zeile nicht ausgeführt wird und beide textfield1 und textfield2 haben Text "you" in ihnen gespeicherten Werte und das ist, was angezeigt wird und die Ergebnisse für das Problem du hast hervorgehoben.

0

Sie sollten die ArrayIndexOutOfBoundsException-Ausnahme erhalten, wenn Sie diesen Code ausführen. Ihr Code wird mit der Ausnahme beendet.

Entsprechend Ihrem Beispiel ist tm.P.length 3.

wenn j = 2,

textfield1= there 
textfield2= you 

wenn j = 3,

textfield1= you 

und

textfield2.setText(tm.P[j+1]); 

wird immer die Ausnahme (ArrayIndexOutOfBoundsException) und die Strömung, da tm beenden. P [4] (es gibt keinen solchen Ort im Array), aber textfield2 vorheriger Wert ist "du"

Also Ihr Endergebnis ist

textfield1= you 
textfield2= you