作为C#的新手,我尝试用方法反转数组。但它不会返回反转阵列。我试了几个小时,但仍然没有得到它我做错了。整个过程是从我购买的“C#玩家指南 - 第2版”一书中吸取教训。不幸的是,课程的解决方案没有包含在书中。 Main
方法是预定义的,应该像您看到的那样使用。
如果我在for
循环内输出它是54321
,这没关系。但正确的输出应来自PrintNumbers
方法。而且存在问题,因为输出12345
没有反转
这是代码,请告诉我你是否看到了不好的东西。
class Program
{
static void Main(string[] args)
{
int[] numbers = GenerateNumbers();
Reverse(numbers);
PrintNumbers(numbers);
Console.ReadKey();
}
//Generate the array and return the numbers
static int[] GenerateNumbers()
{
int[] temp;
temp = new int[] { 1, 2, 3, 4, 5 };
return temp;
}
//Reverse the numbers in the array
static int[] Reverse(int[] numbersToSwap)
{
//Write array length in value to decrement later
int numbersLenghtMax = numbersToSwap.Length;
//Minus 1 because an array starts with 0
numbersLenghtMax--;
//Create a temp value to store last value of array
int[] temp = new int[numbersToSwap.Length];
for (int index = 0; index < numbersToSwap.Length; index++)
{
//Store values reversed in the temp value
temp[index] = numbersToSwap[numbersLenghtMax];
numbersLenghtMax--;
//This output is correct
Console.Write(temp[index]);
}
Console.WriteLine();
//The returned array is not reversed
return temp;
}
//Print out the numbers
static void PrintNumbers(int[] numbers)
{
foreach (int number in numbers)
Console.Write(number);
}
}
答案 0 :(得分:6)
您的int[]
方法返回int[] numbers = GenerateNumbers();
numbers = Reverse(numbers); //Assign the return value to the numbers variable
PrintNumbers(numbers);
Console.ReadKey();
(反转数组的结果),但您没有使用此类返回值。
像这样使用:
{{1}}
答案 1 :(得分:4)
它返回值:
static int[] Reverse(int[] numbersToSwap)
{
// other code
return temp;
}
你只是没有对返回值做任何事情:
Reverse(numbers);
您必须将返回的值分配给某些内容:
numbers = Reverse(numbers);
答案 2 :(得分:2)
您的函数正在返回反向数组,但您没有使用它。
该函数返回一个包含反转数组的新变量(temp
),您需要将此返回值存储在某处。
int[] numbers = GenerateNumbers();
Reverse(numbers); // You pass in the numbers array & are returned a reversed version of it
PrintNumbers(numbers); // You print the original unmodified numbers array
您的Reverse
函数根本不会修改数字数组。相反,它返回一个新变量,表示函数末尾存储在temp
中的内容。
您可能希望更新代码以使用返回值,如下所示:
int[] numbers = GenerateNumbers();
numbers = Reverse(numbers);
PrintNumbers(numbers);
答案 3 :(得分:-1)
声明并设置数组元素值:
int[] array = new int[] { 1, 3, 5, 7, 9 };
数组的反向元素:
Array.Reverse(array);
请参阅: https://msdn.microsoft.com/en-us/library/d3877932(v=vs.110).aspx