我想将int a []值传递给int b []。但我面临混乱。谁能纠正我。 b的输出为0,0,0,45,4,2,1。应该是7,6,5,4,45,2,1。
static void Main()
{
int[] a = new int[] { 1, 2, 45, 4, 5, 6, 7 };
int[] b = new int[7];
int temp = 0;
for (int i = 0; i <= a.Length - 1; i++)
{
b[(b.Length - i) - 1] = a[i];
Console.WriteLine(b[i]);
}
}
答案 0 :(得分:7)
这里的问题是,您要插入从b
的最后一个索引开始的项目,但是要从第一个索引开始输出它们。复制项目的代码是正确的,但是您需要调整一行以将结果输出到控制台,以使用刚插入项目时使用的相同索引在b
中显示项目。
请注意,您还可以进行其他一些改进,例如对a
使用数组初始化器语法,使用a.Length
实例化b
而不是硬编码数字,然后删除未使用的temp
变量,将i < a.Length
用于for
条件(而不是i <= Length - 1
,它对每次迭代进行减法运算),并存储b
索引变量而不是计算两次:
static void Main()
{
int[] a = new int[] {1, 2, 45, 4, 5, 6, 7};
int[] b = new int[a.Length];
for (int i = 0; i < a.Length; i++)
{
int bIndex = b.Length - i - 1;
b[bIndex] = a[i];
Console.WriteLine(b[bIndex]);
}
Console.ReadLine();
}
但是,这仍然会按照插入项目的顺序输出项目 ,该顺序与它们在a
中出现的顺序相同。如果要显示b
中的项目与a
相反,最简单的方法是在填充b
之后执行此操作。请注意,我们可以在此处使用string.Join
方法来用逗号将每个项目连接起来:
static void Main()
{
int[] a = new int[] {1, 2, 45, 4, 5, 6, 7};
int[] b = new int[a.Length];
for (int i = 0; i < a.Length; i++)
{
b[b.Length - i - 1] = a[i];
}
Console.WriteLine($"'a' array: {string.Join(",", a)}");
Console.WriteLine($"'b' array: {string.Join(",", b)}");
Console.ReadLine();
}
输出
答案 1 :(得分:4)
如果要从现有数组创建反向数组,可以使用Reverse
扩展方法:
//using System.Linq;
int[] a = new int[] { 1, 2, 45, 4, 5, 6, 7 };
int[] b = a.Reverse().ToArray();
答案 2 :(得分:2)
您可以使用这种语法
int[] a = {1, 2, 45, 4, 5, 6, 7};
int[] b = new int[7];
for (int i = 0, j = b.Length - 1; i < a.Length; i++, j--)
{
b[i] = a[j];
Console.WriteLine(b[i]);
}