【.NET】3つ以上の文字列比較

解決


Natoh  2005-09-11 01:11:08  No: 58919

3つ以上の文字列が一致するかどうかを調べたいのですが、
String::Equals(String,String);では、
2つしか比較することができないです。

if (String::Equals(String1,String2) && String::Equals(String2,String3) && String::Equals(String2,String3)
{
}

のようにすると、ifが真になりません。(真になるべきが、ならない)

検索してみても、ヒットしないので、質問してみました。

環境:XP Home 言語:VC++ .NET 2003(Windows フォーム アプリケーション)


Blue  2005-09-11 04:09:25  No: 58920

> のようにすると、ifが真になりません
普通に出来ましたけど。

> if (String::Equals(String1,String2) && String::Equals(String2,String3) && String::Equals(String2,String3)
括弧の数がおかしいのと、1と2、2と3、2と3の比較になっている。

String1==String2 かつ String2== String3 ならば String1==String2
なので3つも比較する必要がないかと。

String1,String2,String3がすべてSystem::String型ならば、
いちいちstaticメソッドよばんでも、

if ( ( String1 == String2 ) && ( String2 == String3 ) )
{
}

でいいはず。


Natoh  2005-09-11 06:23:10  No: 58921

すいません。

質問内容がちょっとおかしかったので、訂正します。

http://www.gotdotnet.com/japan/student/column/firststep/firststep8.aspx

ここの、課題1をやっているのですが、

// 終了を判断する
private: bool IsFinish()
{
   if (buttonLeftTop->Text == buttonLeftMid->Text && 
   buttonLeftMid->Text == buttonLeftBottom->Text &&        buttonLeftTop->Text != "")
  {
    return true;
  }
    return false;
  }
}

// 勝敗判定
private: void Win(void)
{
  if (IsFinish() == true)
  {
    MessageBox::Show( String::Concat(LastMark,"の勝ち") );
  }
}

このようにしてみて、
LeftTop,LeftMid,LeftBottomそれぞれの->Textを○にしてみましたが、
メッセージボックスが表示されず、

IsFinishの、 && buttonLeftTop->Text != ""
これを抜かすと、メッセージボックスが表示されました。

本当にすいません。


Natoh  2005-09-11 08:37:45  No: 58922

// 終了を判断する
  private: bool IsFinish()
       {
         if ( String::Equals(buttonLeftTop->Text,buttonLeftMid->Text) && 
           String::Equals(buttonLeftMid->Text,buttonLeftBottom->Text) && 
           buttonLeftTop->Text != "")
         {
           return true;
         }
         return false;
       }

  // 勝敗判定
  private: void Win(void)
     {
       if (IsFinish() == true)
       {
         MessageBox::Show( String::Concat(LastMark,"の勝ち") );
         EndButton(); //すべてのボタンを押せなくする
       }
     }

すいません。上記のように解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加