3

这个想法是他输入一个文本文件和一个单词编号。该软件将在一个新文件中写入文本,但每行包含单词数(他输入的),以及其他一些细节。

想法是这样的,我把他列入了黑名单。黑名单从文件加载到richbox,并在关闭应用程序时保存。

问题是我已经设置好了所有东西(一个检查单词是否在黑匣子中的功能)。

该软件如下所示:

foreach (string word in words)
{
     int blacklist = 0;

     if (FindMyText(word))
     {
           blacklist = 1;
           MessageBox.Show("Current word: " + word + " is blacklisted!");
     }
     else
           MessageBox.Show("Word: " + word);               

     // the code here ... for writing in file and all that

     }

函数 FindMyText(word) 告诉我这个词是否在黑名单中。

如果该函数返回 true,我想跳到下一个单词,但真的不知道该怎么做。

如果你有一些想法,真的会帮助我。

谢谢你们。

4

4 回答 4

1

在 foreach 循环或任何其他循环中,您可以使用continue跳到下一次迭代,所以在您的情况下,您可以这样做

foreach (string word in words)
{
  var blacklist = 0;
  if (FindMyText(word))
  {
    blacklist = 1;
    MessageBox.Show("Current word: " + word + " is blacklisted!");
    continue;
  } else {
     //...
  }
 }
于 2012-06-14T10:05:46.277 回答
1

您可以只添加“继续”键以跳到 foreach 迭代中的下一个元素。

foreach (string word in words)
{
    int blacklist = 0;
    if (FindMyText(word))
    {
        blacklist = 1;
        MessageBox.Show("Current word: " + word + " is blacklisted!");
        // skip to the next element
        continue;
    }

    MessageBox.Show("Word: " + word);
    // the code here ... for writing in file and all that

}

或者您可以拆分 foreach 正文:

foreach (string word in words)
{
    int blacklist = 0;
    if (FindMyText(word))
    {
        blacklist = 1;
        MessageBox.Show("Current word: " + word + " is blacklisted!");
    }
    else
    {
        MessageBox.Show("Word: " + word);
        // the code here ... for writing in file and all that
    }
}

这完全取决于“其他”部分的长度。如果真的很长,使用 continue 更易读,重点放在跳过的部分。

于 2012-06-14T10:06:43.933 回答
1

您已经有了逻辑,只需添加continue

continue 语句将控制权传递给它出现的封闭迭代语句的下一次迭代。它采用以下形式:

if (FindMyText(word))
{
  blacklist = 1;
  MessageBox.Show("Current word: " + word + " is blacklisted!");
  continue;
}
else
{
   MessageBox.Show("Word: " + word);
  AddWordToFile(word); // not black listed;
}

http://msdn.microsoft.com/en-us/library/923ahwt1(v=vs.71).aspx

于 2012-06-14T10:06:48.923 回答
0

我不是 100% 确定我理解,但我认为你想要的是“继续”关键字。

一旦循环的迭代完成,它将重新开始,直到迭代结束。

所以在你的 IF/Else 语句中,你想强制循环进入下一个单词,你输入 continue;。这将忽略循环中所有前面的代码并跳转到下一次迭代。

那有意义吗?

于 2012-06-14T10:07:31.933 回答