-4

当我注意到它的输出行为有些奇怪时,我正在研究一个程序:

获得所需的输出:

while ((str = input.readLine()) != null)
    {
      if(str.contains("sometext"))
      {
         while(str.contains("some_diff_text")==false)
         {
           if(str.contains("something"))
             break;
           else
           {
             //my code;
           }
        }
        break;                     //difference in output because of this break position
      }
    }

没有得到所需的输出:

while ((str = input.readLine()) != null)
{
          if(str.contains("sometext"))
          {
             while(str.contains("some_diff_text")==false)
             {
               if(str.contains("something"))
                 break;
               else
               {
                 //my code;
               }
            }

          }
          break;                     //not giving me the required output
    }

有人可以解释一下为什么输出行为会有所不同吗?

4

3 回答 3

2

您将第二个片段中的break移出if,因此无论如何它都会跳出循环。

于 2013-08-15T19:51:58.437 回答
1

在第二个代码中:

      }

      } <--- "this is placed wrong"
      break;                     //not giving me the required output
   "} <-- should be present here"
}

这就是为什么正确的缩进很重要。在编写代码时缩进你的代码(但不是在编写之后)。
即使在您的第一个代码缩进不正确(缺少统一大小选项卡),它应该是这样的:

while ((str = input.readLine()) != null)
{
    if(str.contains("sometext"))
    {// <------
        while(str.contains("some_diff_text")==false)
        {
            if(str.contains("something"))
             break;
            else
             {
                     //my code;
             }
         }
         break;     
     }// <------ if ends 
}
//   1   2   3  uniform tab spaces ...

请注意,每个}都在同一行的垂直下方{(例如,我在注释中标记了 if)。此外,代码块之间的每一行都从{...}一个制表符空格开始,然后是{制表符空格。

于 2013-08-15T19:52:24.163 回答
1

在第一个代码片段中,第二个break在外部if语句内。while只有当外部if条件为真时,外部循环才会中断。

在第二个代码片段中,第二个break在外部if语句之后。无论外部if条件是否为真,外部while循环都会中断。

于 2013-08-15T19:56:57.810 回答