2016-11-20 43 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就會超出範圍。