我创建了一个线程,其中包含一个while和一个for循环。 while循环正在观察stop变量(默认为false),当按下循环停止按钮时,该变量将变为true。 for循环应该填充squad_0 Byte [](长度为4),如果i大于squad_0,则将i设置为0,这样用户可以再次填充它,直到它按下停止按钮
new Thread(new Runnable() {
public void run() {
while (stop) {
//the program stops there
for(int i = 0; i > squad_0.length; i++){
squad_0[i] = set_sqm0();
if(i++>squad_0.length)
i = 0;
}
}
}
}).start();
//without the while it run everything above
我用这段代码填充数组:
public Byte set_sqm0() {
selected = 0;
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selected = 0;
}
});
//It's the same for b-f
return selected;
}
应检查用户按下的内容。在程序中,我将它从a定义为f,并将a设置为0,将b设置为1,f设置为5,依此类推。结束按钮具有以下代码:
public void endt(View view){
stop = true;
}
程序在while(停止)之前停止。如果我删除了while循环,程序会一直运行到最后,而不必等待按任何按钮或任何按钮。 任何人都可以帮我解决这段代码的问题吗?我只是不知道为什么它不起作用。
答案 0 :(得分:1)
如果我做对了,你的问题就在for循环中了:
for(int i = 0; i > squad_0.length; i++)
{
squad_0[i] = set_sqm0();
if(i++>squad_0.length)
i = 0;
}
循环不会运行,因为i
总是小于squad_0.length(i = 0,squad_0.length = 4),所以你应该改变来自>的符号。至<
甚至在那之后,循环是一个无限循环,因为i
永远不会变得更大或等于squad_0.length
。
你应该删除循环中的if
语句,这样每次for循环结束时都会检查while
循环语句,只有这样,它才会再次启动for循环。
此外,您的while
声明应该是while(!stop)
而不是while(stop)
,以便在您将stop=false
设置为默认设置后第一次运行,并设置stop=true
1}}当你想退出循环时。