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 } 

但是试图根据需要声明不同的Nodeinttypes对于局部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> currentint 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++) {