2017-12-17 9 views
-2

この構文を実行すると、メッセージボックスに値が配列2に存在することがわかりますおよび値が存在しないことを示すメッセージが表示されます。メッセージの値が配列2に存在し、存在しない

両方のメッセージが表示される原因は何ですか?そしてこれを改善するために私はどのように書き直すのですか?

string[] Arr1 = new string[] { "Game1", "Game2", "Game3" }; 
string[] Arr2 = new string[] { "Vid1", "Vid2", "Vid3" }; 
string[] Arr3 = new string[] { "Con1", "Con2", "Con3" }; 

string sVal = "Vid1"; 

if (Arr1.Any(x => x == sVal)) 
{ 
    MessageBox.Show("Value Exists in Array 1"); 
} 
if (Arr2.Any(x => x == sVal)) 
{ 
    MessageBox.Show("Value Exists in Array 2"); 
} 
if (Arr3.Any(x => x == sVal)) 
{ 
    MessageBox.Show("Value Exists in Array 3"); 
} 
else 
{ 
    MessageBox.Show("Value Does Not Exists in Any Array"); 
} 
+0

あなたのデータについて少し教えてください。複数の配列に同じ値を設定できますか? – jdphenix

+1

[デバッガの使い方を学んでください](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –

+0

関連/多分重複:[複数のifステートメントでC#を使用する](https://stackoverflow.com/q/16952769)コードはどのように振る舞うべきかによって異なります。 – Dukeling

答えて

1
string[] Arr1 = new string[] { "Game1", "Game2", "Game3" }; 
string[] Arr2 = new string[] { "Vid1", "Vid2", "Vid3" }; 
string[] Arr3 = new string[] { "Con1", "Con2", "Con3" }; 

string sVal = "Vid1"; 

bool in1 = Arr1.Contains(sVal); 
bool in2 = Arr2.Contains(sVal); 
bool in3 = Arr3.Contains(sVal); 

if (!in1 && !in2 && !in3) 
    MessageBox.Show("Value Does Not Exists in Any Array"); 
else 
{ 
    if (in1) 
     MessageBox.Show("Value Exists in Array 1"); 

    if (in2) 
     MessageBox.Show("Value Exists in Array 2"); 

    if (in3) 
     MessageBox.Show("Value Exists in Array 3"); 
} 

// Output: Value Exists in Array 2 

あなたのコードの最後の部分:

if (Arr3.Any(x => x == sVal)) 
{ 
    MessageBox.Show("Value Exists in Array 3"); 
} 
else 
{ 
    MessageBox.Show("Value Does Not Exists in Any Array"); 
} 

は、単一if statementと見なされている:

  • 値がArr3に発見された場合、その後、メッセージ"Value Exists in Array 3"
  • otherwis値がArr3に見つからない場合はE、その後、メッセージ"Value Does Not Exists in Any Array""Vid1"が含まれていないArr3ので

を表示されている、あなたはいつもに依存しない他の二つのチェックとして、そのメッセージを受け取ることになります最後の一つ。

+0

このdownvoteの理由はありますか? –

-1

あなたは正しく結合されていません。最初のものから離れて他のすべてについて「else if」と書く必要があります。 それ以外の場合は最後のifだけがelseに接続され、他の2つのifはそれ自身の上にあり、メッセージを出力します。

値が複数の配列に含まれる場合は、bool変数を追加し、ifのいずれかがtrueの場合はtrueに設定する必要があります。

+0

なぜ賛成投票ですか? –

+0

あなたの答えを言い返してください、 'あなたは正しく結合されていません。'あなたが '{else {}'構文を利用するために 'if文を変更する必要がある推測すると、なぜdownvote。 – MethodMan

関連する問題