请帮帮我,问题是这样的:
在由整数元素组成的一维数组中
n,计算:
- 偶数数组元素的乘积;
- 位于第一个和最后一个零元素之间的数组元素的总和。
在屏幕上显示数组。
我附上代码:
using System;
using System.Linq;
namespace lab3
{
internal class Program
{
static void Main(string[] args)
{
int[] massiv;
int firstnullelem = 0;
int secondnullelem = 0;
int proizv = 1;
int summaelemnull = 0;
Console.WriteLine("Введите размер массива");
string i = Console.ReadLine();
int razmermassiva = int.Parse(i);
massiv = new int[razmermassiva];
Console.WriteLine("Вам необходимо ввести " + razmermassiva + " эл-ов массива...");
for (int i2 = 0; i2 < razmermassiva; i2++)
{
Console.Write("Введите " + i2 + "-й эл-т массива >>> ");
string e = Console.ReadLine();
int e1 = int.Parse(e);
massiv.Append(e1);
}
for (int nachmas = 0; nachmas < massiv.Length; nachmas++)
{
int nomerelem = nachmas;
int chetnechet = nomerelem % 2;
if (chetnechet == 0)
{
proizv *= massiv[nachmas];
}
else
{
continue;
}
}
for (int perebor = 0; perebor <= massiv.Length; perebor++)
{
if (massiv[perebor] == 0)
{
firstnullelem = perebor;
break;
}
else
{
continue;
}
}
for (int obratperebor = massiv.Length; obratperebor >= 0; obratperebor--)
{
if (massiv[obratperebor] == 0)
{
secondnullelem = obratperebor;
break;
}
else
{
continue;
}
}
int konecsummi = secondnullelem;
for (int nachalosummi = firstnullelem; nachalosummi < konecsummi; nachalosummi++)
{
summaelemnull += massiv[nachalosummi];
}
Console.WriteLine("Произведение всех четных эл-ов массива: ", proizv);
Console.WriteLine("Сумма эл-ов массива от первого до последнего нулевого эл-та ", summaelemnull);
Console.WriteLine("Весь массив: ");
for (int tupo = 0; tupo <= massiv.Length; tupo++)
{
Console.WriteLine(tupo + "-й эл-т массива: ", massiv[tupo]);
}
}
}
}
无论您输入什么元素,无论数组的大小如何,都会出现“索引超出数组范围”的异常。
我尝试改变循环条件,但没有帮助。
我发现评论对你没有多大帮助......
好的,这是更正后的代码:
解释和注释
0。假设您有
2 个苹果,如下所示Array:在以下循环中循环遍历它:
将抛出“索引越界”异常:
为什么?因为:
我们没有第三个元素,对吧?循环中第二遍之后会发生什么?会结束吗?不,它会继续下去,因为
i <= Array.Length这将是真的。因为i在第二遍之后它将2等于Array.Length。我们的数组中有元素吗Array[2]?不。这意味着循环必须
1提前完成一次。如何?像这样:您可以按照您喜欢的方式进行操作:
在这种情况下, 的最大值
i将为1- 我们的最大数组索引为1。起初它可能看起来很难理解,但是当你以后使用索引时,你就会习惯它。
for你有一个额外的代码块:这不是必需的 - 循环将继续,直到满足条件。
一点理论。例如,给定一个循环:
该循环
for由以下部分组成:它可以没有这三个部分中的任何一个(甚至可以同时没有所有部分):
没有初始化程序的选项:
不带谓词的选项:
没有迭代器的选项:
我什至会说更多 - 循环中的条件不一定与循环本身相关联。
int[]。正如我在评论中所写,Array (int[])!=List。您Array不能简单地使用Append.Append实际上是为了StringBuilder.List该方法适用于Add.数组是元素的固定枚举。您可以将值设置为索引,但不能将元素“添加”到数组(与 混淆
List)。Console.WriteLine必须使用串联(+) 或插值($)。我建议你学习: