2017-08-28 77 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]); 
}