C# 反向整数数组返回错误的元素
下面是C#中的一个简单方法,用于反转数组的元素。例如,如果我输入{1,2,3,4},结果应该是{4,3,2,1}C# 反向整数数组返回错误的元素,c#,arrays,reverse,C#,Arrays,Reverse,下面是C#中的一个简单方法,用于反转数组的元素。例如,如果我输入{1,2,3,4},结果应该是{4,3,2,1} public int[] reverse(int[] array) { int[] new_array = new int[array.Length]; for (int i = 0; i < array.Length-1; i++) { new_array[i] = array[array.Length-1 - i]; }
public int[] reverse(int[] array)
{
int[] new_array = new int[array.Length];
for (int i = 0; i < array.Length-1; i++)
{
new_array[i] = array[array.Length-1 - i];
}
return new_array;
}
public int[]反向(int[]数组)
{
int[]new_array=new int[array.Length];
for(int i=0;i
但是,当我运行它并以
{1,2,3,4}
的形式输入时,它会导致{4,3,2,0}
,为什么最后一个元素会变成0
,而不是1
?您遇到的问题是检查数组长度并减去一个
for(int i=0;ivar array = new int[] { 1, 2, 3, 4 };
int[] new_array = new int[array.Length];
for (int i = array.Length -1, n=0 ; i >= 0 ; i--,n++)
{
new_array[n] = array[i];
}
此处存在问题(int i=0;i您必须使用
您不需要数组.Length-1
,因为这将超出数组的索引
,所以只有数组.Length
就足够了
int[] array = new int[4] { 4, 3, 2, 1 };
int[] new_array = new int[array.Length];
for (int i = 0; i< array.Length; i++)
{
new_array[i] = array[(array.Length - 1) - i];
}
int[]数组=新的int[4]{4,3,2,1};
int[]new_array=new int[array.Length];
for(int i=0;i
您可以使用Linq,而不是编写太多的代码行
使用
反转数组
或
试试这个:
for (int i = array.Length - 1,j=0; i >= 0; i--,j++)
{
new_array[j] = array[i];
}
这是家庭作业还是什么?因为在.NetArray.Reverse()中有一个错误,所以在for
循环中有一个off-by-one错误。您从未尝试设置最后一个元素。从长度中减去1或使用因为逻辑。与i
doi
BTW不同,只需调试应用程序就可以轻松发现此错误。调试是您的任务friend@Mairaj为什么不呢?因为这是不正确的。这将从一个数组中的索引i
中获取项目,并将其放在另一个数组中的相同位置。。。这只是从最后一个元素到第一个元素的复制,而不是相反。如果您解释了差异以及问题所在,可能会更容易理解。没有更好的地方。“小于或等于”<代码>确认!在-1失控之前尝试将其更新为fast:)这是错误的,因为在对问题的评论中给出了原因。这就是你的新数组和旧数组将是相同的,这不是问题所要求的。@Chris我没有看到评论说OP希望修改相同的数组。没有,但你的新数组的顺序不是相反的。新阵列的顺序与原始阵列的顺序完全相同。我还注意到您现在已经对排序发表了评论。这将破坏原始顺序,使其无法在此时反转…您的新阵列将与旧阵列相同。如果你解释了你所做的改变是为了做什么(你应该在一个好的回答中这样做),那么你就会意识到它没有做正确的事情。非常抱歉这个大错误,谢谢@Chris通知我,我纠正了我的错误。仍然可以口头解释一下你做了哪些不同的事情,以及为什么它会比原来的更好。一个好的答案不仅能提供有效的代码,还能提供避免将来出现问题所需的知识。
using System.Linq;
var reverse = array.Reverse();
int[] reverse = array.Reverse().ToArray();
for (int i = array.Length - 1,j=0; i >= 0; i--,j++)
{
new_array[j] = array[i];
}