Java:初始化循环init中的多个variables?
我想有两个不同types的循环variables。 有什么办法可以做这个工作吗?
@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(); }
for
语句的初始化遵循局部variables声明的规则。
这将是合法的(如果愚蠢):
for (int a = 0, b[] = { 1 }, c[][] = { { 1 }, { 2 } }; a < 10; a++) { // something }
但是试图根据需要声明不同的Node
和int
types对于局部variables声明是不合法的。
你可以通过使用如下代码块来限制方法内其他variables的范围:
{ int n = 0; for (Object o = new Object();/* expr */;/* expr */) { // do something } }
这确保您不会在方法的其他地方意外重复使用该variables。
你不能这样 要么使用相同types的多个variablesfor(Object var1 = null, var2 = null; ...)
要么提取另一个variables并在for循环之前声明它。
只要在循环外部移动variables声明( Node<T> current
, int currentIndex
),它就可以工作。 像这样的东西
int currentIndex; Node<T> current; for (current = first; current != null; current = current.next, currentIndex++) {
甚至可能是
int currentIndex; for (Node<T> current = first; current != null; current = current.next, currentIndex++) {