跟踪上一个i-in-for-java循环

跟踪上一个i-in-for-java循环,java,for-loop,Java,For Loop,我试图在for循环中获取当前的I值和先前的I值。可能吗 public void mousePressed() { for (int i = 0; i < 6; i++) { if (mouseX > boxes[i].x) { boxes.[i].openIt(); } } } 如何打印I的上一个值?我不想使用I-1,因为我在项目中使用随机数 int i= -1; int prev= -1; boolean cond = true; publ

我试图在for循环中获取当前的
I
值和先前的
I
值。可能吗

public void mousePressed() {  
  for (int i = 0; i < 6; i++) {
    if (mouseX > boxes[i].x) {
      boxes.[i].openIt();
    }
  }
}
如何打印
I
的上一个值?我不想使用
I-1
,因为我在项目中使用随机数

int i= -1;
int prev= -1;
boolean cond = true;
public void mousePressed() {  
    while(cond){
        i=myPositiveRNG.nextInt();//assuming positive numbers, 'cause it's an array index.
        if(prev>-1){
            System.out.println(prev);
        }
        if (mouseX > boxes[i].x){
            boxes.[i].openIt();
        }
        prev = i;
        cond=isItTimeToGo();
}

根据您的需要进行调整。

这可能是最直接的方法:

public void mousePressed() {
  int lastProcessedI = -1;//Or some reasonable default value
  for (int i = 0; i < 6; i++) {
    System.out.println("On iteration " + i + " having completed " + lastProcessedI);
    if (mouseX > boxes[i].x) {
      boxes.[i].openIt();
    }
    lastProcessedI = i;//mark i as having been processed.
  }
}

可能有另一个名为
previousI
的变量,并写入
previousI=i作为循环的最后一行。您可能应该发布与实际问题对应的代码,而不是不是不是您的问题的代码;)使用随机数?你用什么方法迭代这些随机数?如果随机数没有索引,那么您很可能会遇到麻烦。当循环退出lastProcessedI时,它的值将为LastI。如果添加将保存lastProcessedI值的lastProcessedI,则当循环退出时,lastProcessedI中将包含i的上一个值。对于
lastProcessedI
,您可能希望使用
整数而不是
int
,并使用
null
作为其初始值;以防万一,
-1
i
的有效值(OP说
i
在某种程度上是随机的)。@user987339恐怕你的评论没有语法意义,所以不清楚你想表达什么<当for循环存在时,code>lastProcessedI
将具有最后一个值
i
;无需添加也无需附加变量。@DavidWallace这是合理的,但如果他真的输出该值,则该值可能不应为
null
;或者,至少,它需要更多的代码来正确处理这种情况。我不想在项目的循环中使用我创建的-1,这样当我运行它并单击它时,它会根据我单击的位置给我一个1-10的值。然后,当我再次单击时,我有另一个值。我试图得到第一个值和第二个值。每次都会推迟。例如,我可以从1-10中得到2和8,或1和10,或任何2个值。我想打印第一个和第二个值。
public void mousePressed() {
  int lastProcessedI = -1;//Or some reasonable default value
  for (int i = 0; i < 6; i++) {
    System.out.println("On iteration " + i + " having completed " + lastProcessedI);
    if (mouseX > boxes[i].x) {
      boxes.[i].openIt();
    }
    lastProcessedI = i;//mark i as having been processed.
  }
}
public void mousePressed() {
  List<Integer> processHistory = new ArrayList<Integer>();
  for (int i = 0; i < 6; i++) {
    System.out.println("On iteration " + i + " having completed " + processHistory.get(processHistory.size() - 1));
    if (mouseX > boxes[i].x) {
      boxes.[i].openIt();
    }
    processHistory.add(i);//store i as having been processed.
  }

  //here you can get any previously processed i
  processHistory.get(processHistory.size() - 2);//I selected 2 arbitrarily, but it will provide the second-to-last i processed.
}