试图用开关盒内的开关盒破坏一个while循环

时间:2017-06-30 09:47:05

标签: java while-loop switch-statement

我从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;
    }

3 个答案:

答案 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;
      }
    }