2015-12-02 45 views
1

我想要的輸出是這樣的:C#兩串陣列打印第一陣列值與第二陣列值預計0

A=1 
C=3 
D=9 
e=5 

如果第二陣列值爲0,我不希望值如何實現這一目標輸出C#?

private static void Main(string[] args) 
{ 
    string[] a = new string[] { "a", "b", "c", "d" ,"e"}; 
    string[] b = new string[] {1,0,3,0,5 }; 

    foreach (string tmp in a) 
    { 
     bool existsInB = false; 
     foreach (string tmp2 in b) 
     { 
      if (tmp == tmp2) 
      { 
       existsInB = true; 
       break; 
      } 
     } 

     if (!existsInB) 
     { 
      Console.WriteLine(string.Format("{0} is not in b", tmp)); 
     } 
    } 

    Console.ReadLine(); 
} 

在這兩個陣列我想打印像a=1,c=3,e=5值,我不希望打印第二陣列零值。我如何實現這一目標?

我需要在C#中的輸出:a=1 c=3 e=5

回答

3

我相信這會爲你工作

class Program 
{ 
    static void Main(string[] args) 
    { 
     string[] a = new string[] { "a", "b", "c", "d", "e" }; 
     int[] b = new int[] { 1, 0, 3, 0, 5 }; 

     for (int i = 0; i < a.Length; i++) 
     { 
      if (b[i] != 0) 
       Console.WriteLine(a[i] + "=" + b[i]); 
     } 

     Console.ReadLine(); 
    } 
} 

詞典版本(根據馬特·默多克的建議):

 Dictionary<string, int> ab = new Dictionary<string, int> 
     { 
      {"a", 1}, 
      {"b", 0}, 
      {"c", 3}, 
      {"d", 0}, 
      {"e", 5} 
     }; 

     foreach(var pair in ab) 
     { 
      if(pair.Value != 0) 
       Console.WriteLine(pair.Key + "=" + pair.Value); 
     } 
+0

爲了使它更具動態性,我認爲你可以用no來代替循環計數。數組中的元素。 –

+0

你說得對。但如果是我,我會使用一個字典。 :) – interceptwind

+0

更好的選擇,是的。你也可以在你的回答中推薦它。它總是很好地代表解決問題的最佳方式,而不是採取方法,並將選擇留給OP。 –

0

對方回答由@interceptwind已經給出瞭解決方案,這只是一個替代解決方案與Linq

string[] a = new string[] { "a", "b", "c", "d", "e" }; 
string[] b = new string[] { "1", "0", "3", "9", "5" }; 

var result = a.Zip(b, (strA, strB) => string.Format("{0}={1}", strA.ToUpper(), strB)) 
       .Where(s => !s.Contains("=0")) 
       .ToArray(); 
+0

我替換循環計數,但我會得到只有一個= 1 – kavitha

+0

請建議我如何獲得a = 1,c = 3,d = 9,e = 5使用循環我想實現這個輸出。 – kavitha

+0

我不明白你的意思*「我替換循環計數」*。只需複製粘貼此*精確*代碼並運行,就會得到您想要的結果。 –