2013-10-10 115 views
-1

我试图创建一个简单的计算器来显示哪些整数包含在两个数组中,所有这些数字都是由用户输入的。如何得到满数字,因为我认为当我做foreach循环它的阅读数字像例如49它读取它作为4和9不是49?我如何解决这个问题?我又在哪里误解了?检查一个元素是否包含在两个不同的数组中

string firstTextBox = ConjTextBox.Text; 
string secondTextBox = DisjTextBox.Text; 
int intsInFirstTextBox; 
int intsInSecondTextBox; 
List<int> ListOfInts = new List<int>(); 
try 
{ 
    foreach (char c in firstTextBox) 
    { 
     intsInFirstTextBox = Convert.ToInt32(c); 
     foreach (char q in secondTextBox) 
     { 
      intsInSecondTextBox = Convert.ToInt32(q); 

      if (intsInFirstTextBox == intsInSecondTextBox) 
      { 
       ListOfInts.Add(intsInFirstTextBox); 
       ListOfInts.Sort(); 
      } 
     } 
    } 
    foreach (int i in ListOfInts) 
    { 
     resultTextBox.Text += i.ToString(); 
    } 
} 
catch (Exception Error) 
{ 
    resultTextBox.Text = Error.Message; 
} 
+0

那么什么样的价值观是你在你的第一和secondText箱获得分割字符串,然后循环。是多个数字还是只有一个? –

+1

用户如何在文本框中输入数字?任何分隔符? – Arran

+0

@Arran是的,我需要弄清楚如何输入由昏迷分开的值。 –

回答

1
char separator=','; 
int temp=-1; 
var list1=firstTextBox.Split(new char[]{separator}) 
         .Where(n=>int.TryParse(n,out temp)) 
         .Select(n=>temp); 
var list2=secondTextBox.Split(new char[]{separator}) 
         .Where(n=>int.TryParse(n,out temp)) 
         .Select(n=>temp); 
var common=list1.Intersect(list2); 
+0

@downvoter如果有什么我可以改善让我知道.. – Anirudha

+0

嘿,什么是n指代在这个lambda表达式中?我理解我和s,但n对我而言是相当新的 –

+0

@ХристоХристо n是一个参数。在这种情况下,它是一个字符串 – Anirudha

0

如果他们是用逗号分隔,然后通过数组

char[] split = new char[] { ',' }; 
StringSplitOptions options = StringSplitOptions.RemoveEmptyEntries; 

string[] first = ConjTextBox.Text.Split(split, options); 
string[] second = DisjTextBox.Text.Split(split, options); 

int[] intsInFirstTextBox = Array.ConvertAll(first, s => int.Parse(s)); 
int[] intsInSecondTextBox = Array.ConvertAll(second, s => int.Parse(s)); 

int[] ListOfInts = intsInFirstTextBox.Intersect(intsInSecondTextBox); 
+0

嘿,我非常感谢你回答你能解释我为什么你做一个“分裂”字符的阵列? –

+0

只是为了便于参考,因为它的使用两次 – hunter

相关问题