2017-08-28 44 views
0

我將不勝感激,因爲我不知道如何製作此程序。 我應該用兩個表編寫程序。第一個將填寫數字Random tab = new Random();。之後,我應該倒轉數字並將其填入第二個表格。C#將數據轉錄到第二個表並倒轉它們

我做了第一個功能,但我不知道如何使用第二個表開始?

class Program 
{ 


    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
      Console.WriteLine(tablica1[i]); 
     } 

     Console.Read(); 

     int[] tablica2 = new int[20]; 

     /*for (int i = 20; i > 0; i--) 
     { 

     } 
     */ 
    } 
} 
+1

的[逆向數組中的元素]可能的複製(https://stackoverflow.com/questions/18394882/revers e-elements-in-an-an-an-array) – Sinatr

+0

那麼,那裏的答案建議使用內置方法,但是這看起來更像是一個家庭作業,他們應該知道如何做到「手動」。 –

+0

@KlaudynaZ: 您是否需要在不創建其他數組的情況下執行此操作?如果是這樣,我猜你對如何做而不覆蓋(因此丟失)數組元素感到困惑。提示:考慮在每次迭代中交換兩個元素。 –

回答

0

你沒有完全描述當您運行的代碼到底發生了什麼,但我認爲這個問題是這一部分 - 因爲這應該給你一個IndexOutOfRangeException

for (int j = tablica2.Length; j > 1 ; j--) 
{ 
    tablica2[j] = tablica1[20-j]; 
    Console.WriteLine(tablica2[j]); 
} 

的數組索引去形式0tablica2.Length - 1(一個小於長度,所以索引tablica2.Length陣列)。
你的循環變爲反向從爲索姆原因。

因此,只要它開始執行,j20,但最高索引是19

改變循環如此這般品種齊全,並更改循環體,這樣你就不能訪問了超範圍的指數,在以下兩種方法之一:

for (int j = tablica2.Length - 1; j >= 0 ; j--) // goes from 19 to 0 
{ 
    tablica2[j] = tablica1[tablica1.Length - j - 1]; 
} 

for (int j = tablica2.Length; j > 0 ; j--) // goes from 20 to 1 
{ 
    tablica2[j - 1] = tablica1[tablica1.Length - j]; 
} 
+0

謝謝你的幫助!它正在工作!現在,我明白我的錯誤! :) – KlaudynaZ

0
static void Main(string[] args) 
{ 
    int[] tablica1 = new int[20]; 

    Random tab = new Random(); 

    for (int i = 0; i < 20; i++) 
    { 
     tablica1[i] = tab.Next(20); 
     Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
     Console.WriteLine(tablica1[i]); 
    } 

    Console.Read(); 

    int[] tablica2 = new int[20]; 

    for (int i = 20; i > 0; i--) 
    { 
     tablica2[i]=tablica1[20-i]; 
    } 

} 

}

0

@Sinatr感謝您對本話題。這真的很有幫助,但只有一張桌子。 @FilipMilovanović是的,我必須做兩個兩個表:)首先預留後,我應該把元素從第一到第二。我改變了這一點,但在控制檯中,我仍然只能看到第一個。 :(

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Randomy1 
{ 
    class Program 
{ 

    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine(tablica1[i]); 
     } 



     int[] tablica2 = new int[20]; 

     for (int j = tablica2.Length; j > 1 ; j--) 
     { 
      tablica2[j] = tablica1[20-j]; 
      Console.WriteLine(tablica2[j]); 
     } 

     Console.Read(); 
    } 
} 
} 
0

我認爲這會工作

for (int i = 0; i < 20; i++) 
{ 
    tablica2[i] = tablica1[20 - (i + 1)]; 

    Console.WriteLine("Tablica 1st :: " + tablica1[i] + " Tablica 1 Reverse "  + tablica1[20 - (i + 1)] + " Tablica 2 " + tablica2[i]); 
} 
相關問題