Ich möchte zwei Schleifenvariablen unterschiedlichen Typs haben. Gibt es eine Möglichkeit, diese Arbeit zu machen?
@Override
public T get(int index) throws IndexOutOfBoundsException {
// syntax error on first 'int'
for (Node<T> current = first, int currentIndex; current != null;
current = current.next, currentIndex++) {
if (currentIndex == index) {
return current.datum;
}
}
throw new IndexOutOfBoundsException();
}
first
? Es wird nirgendwo deklariert. Ist es ein Klassenmitglied?Antworten:
Die Initialisierung einer
for
Anweisung folgt den Regeln für lokale Variablendeklarationen .Dies wäre legal (wenn dumm):
Aber versuchen, das eindeutige
Node
und zu erklärenint
Typen wie gewünscht ist für lokale Variablendeklarationen jedoch nicht zulässig.Sie können den Umfang zusätzlicher Variablen innerhalb von Methoden einschränken, indem Sie einen Block wie den folgenden verwenden:
Dies stellt sicher, dass Sie die Variable nicht versehentlich an anderer Stelle in der Methode wiederverwenden.
quelle
Das kannst du nicht mögen. Entweder verwenden Sie mehrere Variablen desselben Typs
for(Object var1 = null, var2 = null; ...)
oder Sie extrahieren die andere Variable und deklarieren sie vor der for-Schleife.quelle
Verschieben Sie einfach die Variablendeklarationen (
Node<T> current
,int currentIndex
) außerhalb der Schleife, und es sollte funktionieren. Etwas wie dasoder vielleicht sogar
quelle
Wir können die verschiedenen Datentypen in der for-Schleife nicht gemäß ihrem Design initialisieren. Ich gebe nur ein kleines Beispiel.
quelle