跟踪上一个i-in-for-java循环
我试图在for循环中获取当前的跟踪上一个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
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.
}