如何在不使用break的情况下退出C ++循环?

时间:2015-10-03 06:46:24

标签: c++ loops break

我正在编写一个代码来交换数组中的整数,我想知道如何在不使用break语句并保持逻辑一致的情况下退出循环。以下是我的代码:

String alph = "abcdefghijklmnopqrstuvwxyz"
for (int i = 0; i < alph.length(); i++){
    if (StringUtils.countMatches(string1, alph.charAt(i) != StringUtils.countMatches(string2, alph.charAt(i)){
        // not an anagram
    }
}

3 个答案:

答案 0 :(得分:5)

使用转到[因此我会被打嗝]。

if (arrays[0][first] % 2 == 0)
{
     cout << arrays[0][first] << " is odd " << endl;
     for (int i = 1; i < arraycount; ++i)
     {
         for (int j = 1; j < arrays[i][0] + 1; ++j)
         {
             if (arrays[i][j] % 2 != 0)
             {
                  int temp = arrays[i][j];
                  cout << "Array #" << 1 << " value " 
                          << arrays[0][first] << " swapped with "
                          << "Array #" << i << " value " << temp;

                  arrays[i][j] = arrays[0][first];
                  arrays[0][first] = temp;
                  goto done;
              }
          }
done:
    something;

答案 1 :(得分:4)

for (int i = 1; i < arraycount && !swapped; ++i)
{
     for (int j = 1; j < arrays[i][0] + 1 && !swapped; ++j)
     {
        if(arrays[i][j] % 2 != 0)
          int temp = arrays[i][j];
          cout << "Array #" << 1 << " value " << arrays[0][first] << " swapped with " << "Array #" << i << " value " << temp;
          arrays[i][j] = arrays[0][first];
          arrays[0][first] = temp;
          swapped = 1;
        }
     }
}

这将在内循环中执行相同的操作。

答案 2 :(得分:2)

使用Break语句不一定会使代码逻辑不一致,并且中断通常对提高代码的可读性很有用。但是在回答你的问题时,这可以通过利用while循环和逻辑布尔运算符来实现。下面是您的代码的修改版本,我尝试尽可能少地修改它,以便您仍然可以在示例中看到您的代码。我在下面的示例中留下了您可能想要查看的代码中的一些逻辑错误。特别是下面的行将打印“奇数”,而实际上数字是偶数。如果您想要检查数字arrays[0][first]是否为奇数,则需要使用以下if语句if (arrays[0][first] % 2 != 0)而不是if (arrays[0][first] % 2 == 0)

逻辑错误

if (arrays[0][first] % 2 == 0)
            {
                    cout << arrays[0][first] << " is odd " << endl;

这是不使用中断的代码。

bool swapped = true;
            if (arrays[0][first] % 2 == 0)
            {
                    cout << arrays[0][first] << " is odd " << endl;
                    int i = 1;
                    while ( (i < arraycount) && swapped)
                    {
                            int j = 1;
                            bool if_odd = true;
                            while ((j < arrays[i][0] + 1) && if_odd)
                            {
                                    if (arrays[i][j] % 2 != 0)
                                    {
                                            int temp = arrays[i][j];
                                            cout << "Array #" << 1 << " value " << arrays[0][first] << " swapped with "
                                                    << "Array #" << i << " value " << temp;

                                            arrays[i][j] = arrays[0][first];
                                            arrays[0][first] = temp;
                                            swapped = false;
                                            if_odd = false;
                                    }
                                    j++;
                            }
                            i++;
                    }
            }