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 フォーム アプリケーション)
> のようにすると、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 ) )
{
}
でいいはず。
すいません。
質問内容がちょっとおかしかったので、訂正します。
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 != ""
これを抜かすと、メッセージボックスが表示されました。
本当にすいません。
// 終了を判断する
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(); //すべてのボタンを押せなくする
}
}
すいません。上記のように解決しました。
ツイート | ![]() |