0

我必须制作一个整数序列,稍后将其翻转。例子。如果整数是 0,1,2,3,4,它最终会将其转为 -4,-3,-2,-1,0。

我试过这个,我拥有的int值(mas1)除以-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;
4

3 回答 3

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) 划分数组。不过,我不确定您在代码中做了什么。

于 2013-01-11T09:17:15.630 回答
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();
于 2013-01-11T09:34:00.380 回答
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;
于 2013-01-11T09:29:57.407 回答