我想要两个不同类型的循环变量。有什么办法能使这工作吗?

@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();
}

最佳答案

initialization of a for语句遵循local variable declarations的规则。
这是合法的(如果愚蠢的话):

for (int a = 0, b[] = { 1 }, c[][] = { { 1 }, { 2 } }; a < 10; a++) {
  // something
}

但是,对于局部变量声明来说,按照您的意愿声明不同的Nodeint类型是不合法的。
您可以使用如下块来限制方法中其他变量的范围:
{
  int n = 0;
  for (Object o = new Object();/* expr */;/* expr */) {
    // do something
  }
}

这可以确保您不会意外地在方法的其他地方重用变量。

关于java - Java:在for循环init中初始化多个变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49335730/

10-13 09:13