2016-11-20 45 views
-1

我正在做作业。到目前为止,我得到了代码,但在最后一行,我需要结合两个输入值。它以某种方式工作,然后发生错误错误。我认为问题出现在最后的for循环中。这是代码,btw代码中的文本是拉脱维亚文。C#数组组合

Console.Write("Ievadiet pirma masīva izmeru: "); 
     int first = Convert.ToInt32(Console.ReadLine()); 
     string[] n = new string[pirmais]; 

     Console.Write("Ievadiet pirma masīva izmeru: "); 
     int second = Convert.ToInt32(Console.ReadLine()); 
     string[] m = new string[otrais]; 



     for (int i = 0; i < n.Length; i++) 
     { 
      Console.Write("Ievadiet 1. masiva {0} vertibu: ",i); 

      n[i] = Console.ReadLine(); 
     } 

     for (int j = 0; j < m.Length; j++) 
     { 
      Console.Write("Ievadiet 2. masiva {0} vertibu: ", j); 

      m[j] = Console.ReadLine(); 
     } 
     for (int i = 0; i < n.Length; i++) 
     { 
      Console.WriteLine("1. masiva {0} vertiba ir: " + n[i], i); 
     } 
     for (int j = 0; j < m.Length; j++) 
     { 
      Console.WriteLine("2. masiva {0} vertiba ir: "+m[j],j); 
     } 

     Console.Write("1. un 2. masīva apvienotā simbolu virkne: "); 
     for (int i = 0; i < n.Length+m.Length; i++) 
     {    
      Console.WriteLine(n[i] + m[i]);    
     } 
+0

你应该发表一个[MCVE](强调*可验证*),带*的具体*错误信息,以便更容易调试什么错。此外,您对预期的描述可能会有所帮助。 – Aurora0001

+0

问题是数组长度不一样,你也不应该添加两个数组长度来比较for循环 –

回答

0

你的代码有很多问题。 首先,您应该用英语发布问题,而不是用其他语言发布。 其次你试图访问超出范围的数组项。

您可以通过以下方式进行操作。

Console.Write("Ievadiet pirma masīva izmeru: "); 
    int first = Convert.ToInt32(Console.ReadLine()); 
    string[] n = new string[first]; 

    Console.Write("Ievadiet pirma masīva izmeru: "); 
    int second = Convert.ToInt32(Console.ReadLine()); 
    string[] m = new string[second]; 

    for (int i = 0; i < n.Length; i++) 
    { 
     Console.Write("Ievadiet 1. masiva {0} vertibu: ", i); 

     n[i] = Console.ReadLine(); 
    } 

    for (int j = 0; j < m.Length; j++) 
    { 
     Console.Write("Ievadiet 2. masiva {0} vertibu: ", j); 

     m[j] = Console.ReadLine(); 
    } 
    for (int i = 0; i < n.Length; i++) 
    { 
     Console.WriteLine("1. masiva {0} vertiba ir: " + n[i], i); 
    } 
    for (int j = 0; j < m.Length; j++) 
    { 
     Console.WriteLine("2. masiva {0} vertiba ir: " + m[j], j); 
    } 

    Console.Write("1. un 2. masīva apvienotā simbolu virkne: "); 

    if (n.Length < m.Length) 
    { 
     for (int i = 0; i < n.Length; i++) 
     { 
      Console.WriteLine(n[i] + m[i]); 
     } 
     for (int i = n.Length; i < m.Length; i++) 
     { 
      Console.WriteLine(m[i]); 
     } 

    } 
    else if (n.Length > m.Length) 
    { 
     for (int i = 0; i < m.Length; i++) 
     { 
      Console.WriteLine(n[i] + m[i]); 
     } 
     for (int i = m.Length; i < n.Length; i++) 
     { 
      Console.WriteLine(n[i]); 
     } 
    } 
    else 
    { 
     for (int i = 0; i < n.Length; i++) 
     { 
      Console.WriteLine(n[i] + m[i]); 
     } 
    } 
+0

谢谢你的帮助和建议! :) –

+0

Sry再次打扰,但如果你有时间和希望,你能告诉我我怎么能把第二个数组之间的第一个数组? –

+0

你是什么意思由阵列之间 –

0

如果你的n数组是10个元素而m数组是10000个元素会怎样?

for (int i = 0; i < n.Length+m.Length; i++){ 
    Console.WriteLine(n[i] + m[i]);    
} 

只要变量i达到10个数组n就会超出范围。