我从USB组件接收一些数据,组件会向我发送连续数据,如果我收到数据我必须自己停止读取数据并且组件不会停止发送数据,我试图打破循环如果我收到一些密钥,我尝试使用布尔值,但它不会终止循环。
boolean shouldBreak = false;
switch(msg.what)
{
case USBAccessoryWhat:
switch(((USBAccessoryManagerMessage)msg.obj).type) {
case READ:
if(accessoryManager.isConnected() == false) {
return;
}
while(true) {
if(accessoryManager.available() < 2) {
break;
}
switch(commandPacket[0]){
case 0:
test = Integer.toString(commandPacket[0]) + ", " + Integer.toString(commandPacket[1]);
Test_one(test);
break;
case 1:
test = Integer.toString(commandPacket[0]) + ", " + Integer.toString(commandPacket[1]);
Test_one(test);
break;
case 2:
test = Integer.toString(commandPacket[0]) + ", " + Integer.toString(commandPacket[1]);
Test_one(test);
shouldBreak = true; // have to break here
break;
default:
break;
}
if (shouldBreak) break; //To break this while
}
break;
}
break;
}
答案 0 :(得分:1)
尝试将while(true)
替换为while(!shouldBreak)
作为break
语句,只会突破最内层的循环/切换/等等。
有关详细信息,请参阅例如Difference between break and continue statement
答案 1 :(得分:1)
在检查中使用你的旗帜:
switch ()
case
bool shouldLoop = true
while (shouldLoop)
switch
case
if
shouldLoop = false
答案 2 :(得分:1)
尝试使用带有while循环的标签,如下所示:
label:
While()
{
for()
{
break label;
}
}