3

アイデアは、彼がテキスト ファイルと単語番号を入力することです。ソフトウェアはそのテキストを新しいファイルに書き込みますが、1 行あたりの (彼が入力した) 単語数と、その他の詳細はほとんどありません。

アイデアはこれです、私は彼をブラックリストにしました。ブラックリストはファイルからリッチボックスにロードされ、アプリケーションを閉じるときに保存されます。

問題は、すべてが設定されていることです (単語がブラックボックスにあるかどうかをチェックする関数)。

ソフトウェアは次のようになります。

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 反復の次の要素にスキップするには、「continue」キーワークを追加するだけです。

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
    }
}

それはすべて、「else」部分の長さに依存します。非常に長い場合は、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 に答える