Java 如何一次停止循环运行
我目前正在练习使用数组列表的for循环。每次用户得到正确答案时,都会向序列中添加一个额外的随机值。因此,在开始时,一个图像会闪烁,每次都会有一个图像按顺序闪烁 我遇到的问题是整个序列一次播放。例如,在第二次运行时,两个图像应依次闪烁。但我现在得到的是两个闪光灯在一起。我如何打破循环,使一个闪烁,然后是另一个 我的代码如下:Java 如何一次停止循环运行,java,android,for-loop,arraylist,Java,Android,For Loop,Arraylist,我目前正在练习使用数组列表的for循环。每次用户得到正确答案时,都会向序列中添加一个额外的随机值。因此,在开始时,一个图像会闪烁,每次都会有一个图像按顺序闪烁 我遇到的问题是整个序列一次播放。例如,在第二次运行时,两个图像应依次闪烁。但我现在得到的是两个闪光灯在一起。我如何打破循环,使一个闪烁,然后是另一个 我的代码如下: ArrayList<Integer> list = new ArrayList<Integer>(); int retval; publ
ArrayList<Integer> list = new ArrayList<Integer>();
int retval;
public void Run(){
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
int totalElements = list.size();
for(int i=0; i < totalElements;i++ ){
retval = list.get(i);
if (retval==1){
Centre.setImageResource(R.drawable.flash1);
Reset.start();// runs a class that resets the imageiew after a few seconds
}
else if (retval==2){
upperRight.setImageResource(R.drawable.flash2);
Reset.start();
}
else if (retval==3){
lowerRight.setImageResource(R.drawable.flash3);
Reset.start();
}
else if (retval==4){
lowerLeft.setImageResource(R.drawable.flash4);
Reset.start();
}
else if (retval==5){
upperLeft.setImageResource(R.drawable.flash5);
Reset.start();
}
}
}
好的,如果有人想按顺序显示图像,这里有一个解决方案:
public void ZAP() {
if(i < totalElements){
retval =list.get(i);
if (retval==1){
check = 1;
Centre.setImageResource(R.drawable.flash1);
ResetTimer.start();
}
else if (retval==2){
check = 2;
upperRight.setImageResource(R.drawable.flash2);
ResetTimer.start();
}
else if (retval==3){
check =3;
lowerRight.setImageResource(R.drawable.flash3);
ResetTimer.start();
}
else if (retval==4){
check = 4;
lowerLeft.setImageResource(R.drawable.flash4);
ResetTimer.start();
}
else if (retval==5){
check=5;
upperLeft.setImageResource(R.drawable.flash5);
ResetTimer.start();
}}
}
public void Rand() {
i=0 ;
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
totalElements = list.size();
Log.d("LOOK", Integer.toString(rndInt));
Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");
ZAP();
打破循环,使其中一个闪烁,然后另一个闪烁。你的意思是改变图像资源吗?为什么要使用Reset.start;要重置资源,源代码在哪里?重置只是一个计时器,因此几秒钟后它会将图像资源恢复到运行for循环之前的状态。因此,flash的意思是设置图像资源,就像它在提供的代码中所做的一样。我在这里做了一些事情,计时器很可能在另一个线程中运行,而这个循环很可能在主线程上运行totalElements Times,因此它不会与计时器同步。你说你想让两个图像闪烁,一个接着另一个。在编辑下,我添加了重置。我试着将它移动到for循环中,但没有任何改变。如果for循环中的暂停可以输入,我觉得重置将按预期工作。你的timerclass正在重置所有图片。我真的看不出有什么好的理由。但是这样设置的话,我会在Reset.class中引入一个hasStopped函数,并在每次Reset.class之后直接添加。开始一段时间!Reset.hasStopped{}因此您的代码将等待并在上一张图片重置后继续闪烁下一张图片。
public void ZAP() {
if(i < totalElements){
retval =list.get(i);
if (retval==1){
check = 1;
Centre.setImageResource(R.drawable.flash1);
ResetTimer.start();
}
else if (retval==2){
check = 2;
upperRight.setImageResource(R.drawable.flash2);
ResetTimer.start();
}
else if (retval==3){
check =3;
lowerRight.setImageResource(R.drawable.flash3);
ResetTimer.start();
}
else if (retval==4){
check = 4;
lowerLeft.setImageResource(R.drawable.flash4);
ResetTimer.start();
}
else if (retval==5){
check=5;
upperLeft.setImageResource(R.drawable.flash5);
ResetTimer.start();
}}
}
public void Rand() {
i=0 ;
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
totalElements = list.size();
Log.d("LOOK", Integer.toString(rndInt));
Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");
ZAP();