乘以我的数组值

3
class Program
{
    static void Main(string[] args)
    {
        double[] values = new double[5];
        int i;
        double multValue;

        for (i = 0; i < 5; i++)
        {
            Console.Write("Enter value for number " + (i+1) + ": ");
            values[i] = double.Parse(Console.ReadLine());
        }
        Console.Write("Enter a value to multiply by: ");
        multValue = double.Parse(Console.ReadLine());

        values[1] = values[1] * multValue;
        values[2] = values[2] * multValue;
        values[3] = values[3] * multValue;
        values[4] = values[4] * multValue;
        values[5] = values[5] * multValue;

        Console.WriteLine("The new value for values[1] is: " + values[1]);
        Console.WriteLine("The new value for values[2] is: " + values[2]);
        Console.WriteLine("The new value for values[3] is: " + values[3]);
        Console.WriteLine("The new value for values[4] is: " + values[4]);
        Console.WriteLine("The new value for values[5] is: " + values[5]);

        Console.ReadLine();
    }
}

我想知道如何对数组中的每个值进行乘法运算。例如,如果用户将每个值输入为10、20、30、40、50,然后将其乘以2,则我希望每个元素的值都更改为20、40、60、80、100,然后显示出来。我认为使用循环处理会更容易,但我不知道该怎么做。谢谢!


3
您可以使用循环来收集初始值。在同样的循环内进行乘法运算时,您遇到了什么问题?请说明。 - Duncan Howe
每当我运行代码时,就会出现“IndexOutOfRangeException未处理”的消息。我完全不知道为什么。:\ - user5927290
2
因为C#数组使用从零开始的索引,即第一个元素是0。行代码values[5] = values[5] * multValue是错误的。最大索引值始终为长度-1 => 4。 - Duncan Howe
数组和循环如同面包和黄油一般相辅相成。当你发现自己复制并粘贴一行代码,只是为了改变数组索引时,应该使用循环代替。如果你尝试过这种方法,但收到错误消息,应该向我们展示你尝试的内容和确切的错误消息,以便我们提供帮助。 - Code-Apprentice
4个回答

4

您可以使用LINQ的Select()扩展方法:

values = values.Select(d => d * multValue).ToArray();

3

一个循环用于乘法,另一个用于打印。

使用以下代码:

// One loop to multiply them
for (int i = 0; i < values.Length; i++)
{
    values[i] *= multValue;
}

// One loop to print them
for (int i = 0; i < values.Length; i++)
{
    Console.WriteLine("The new value for values[{0}] is: {1}", i, values[i]);
}

改为:

values[1] = values[1] * multValue;
values[2] = values[2] * multValue;
values[3] = values[3] * multValue;
values[4] = values[4] * multValue;
values[5] = values[5] * multValue;

Console.WriteLine("The new value for values[1] is: " + values[1]);
Console.WriteLine("The new value for values[2] is: " + values[2]);
Console.WriteLine("The new value for values[3] is: " + values[3]);
Console.WriteLine("The new value for values[4] is: " + values[4]);
Console.WriteLine("The new value for values[5] is: " + values[5]);

2

要将数组中的所有项相乘,只需使用另一个循环。

for (i = 0; i < values.Length ; i++)
{
    values[i] *= multValue; // short for values[i] = values[i] * multValue
}

每次运行代码时,都会出现“IndexOutOfRangeException was unhandled”消息。 错误“IndexOutOfRangeException”的原因是数组索引从0到数组大小-1。您正在尝试访问 values 大小的索引 values [5] = values [5] * multValue;

0

你好,希望以下内容能够帮到你;使用循环应该像这样:

for(int i= 0; i<values.length; i++){
     values[i] = values[i] * multValue;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接