我必须制作一个整数序列,以后会把它转过来。例。如果整数是0,1,2,3,4,它最终将它转为-4,-3,-2,-1,0。
我试过这个,我有(mas1)的int值除以-1,所以它会改变数字上的标记。如果我尝试我得到一个错误,但无法解决。错误:
“运算符”/'不能应用于'int []'和'类型的操作数 'int'“
以下是代码:
int[] mas1 = { 0, 1, 2, 3, 4 };
int mas2;
int[] mass = new int[1]{mas1.Length};
Array.Sort(mass);
int arvud = mas1.Length;
int[] koik = new int[arvud];
List<int> list = new List<int>();
foreach (int i in mass)
if (i == mas1.Length) foreach (int a in mas1) list.Add(a);
foreach (int i in list) Console.Write(i + ",");
mas1 / -1 = mas2;
答案 0 :(得分:4)
使用LINQ,您可以:
int[] mas1 = new []{ 0, 1, 2, 3, 4 };
int[] newArray = mas1.Reverse().Select(r => r * -1).ToArray();
或者如果你想对任何数字都有负号,无论是正数还是负数。
int[] newArray = mas1.Reverse().Select(r => -System.Math.Abs(r)).ToArray();
如果你打印它:
foreach (int item in newArray)
{
Console.WriteLine(item);
}
然后输出为:
-4
-3
-2
-1
0
由于以下行,您收到错误:
mas1 / -1 = mas2;
您不能将数组mas1
除以整数值(-1)。我不知道你在代码中做了什么。
答案 1 :(得分:1)
有一些不同的方法可以做到这一点。您可以否定每个项目并反转数组:
int[] mas1 = { 0, 1, 2, 3, 4 };
int[] mas2 = new int[mas1.Length];
for (int i = 0; i < mas1.Length; i++) {
mas2[i] = -mas1[i];
}
Array.Reverse(mas2);
您可以使用LINQ扩展方法执行相同的操作:
int[] mas1 = { 0, 1, 2, 3, 4 };
int[] mas2 = mas1.Select(i => -i).Reverse().ToArray();
答案 2 :(得分:0)
如果要编辑阵列,可以这样有效地执行此操作:
int[] nums = { 0, 1, 2, 3, 4 };
var reverseVal = -nums[nums.Length - 1];
for (int i = 0; i < nums.Length; i++)
nums[i] += reverseVal;
假设数组按照您的示例进行排序,此代码采用最大数字(最后一个元素),将其符号反转以添加到每个元素,从而生成所需的结果。
如果你想要一个新阵列:
int[] mas1 = { 0, 1, 2, 3, 4 };
var len = mas1.Length;
int[] mas2 = new int[len];
var reverseVal = -mas1[len - 1];
for (int i = 0; i < len; i++)
mas2[i] = mas1[i] + reverseVal;