gpt4 book ai didi

c# - 遍历数组时 C# 中的索引超出范围异常

转载 作者:太空宇宙 更新时间:2023-11-03 20:15:29 26 4
gpt4 key购买 nike

我有这段代码,我正在使用它来创建一个程序,该程序接受一个范围并将质数输出到控制台。我有一个问题,我正在尝试遍历我构建的数组,因此循环应该只将使用我的方法的返回值作为质数的值写入控制台。我遇到的问题是我将第二个条件设置为 numArray.Length 但它似乎给了我 Index out of Range Exception。我只希望循环遍历 numArray 中的所有值,并在确定最后一个值是否为素数时停止。

public struct Prime
{
public int x;


// constructor for Prime
public Prime(int x1)
{
x = x1;

}

public int IsPrime(int number)
{
int i;
for (i = 2; i * i <= number; i++)
{
if (number % i == 0) return 0;
}
return 1;
}
}

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter an Integer");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter a Second Integer of Greater Value");
// int num2 = 0;
int num2 = Convert.ToInt32(Console.ReadLine());

/* if (num2temp > num1)
{
num2temp = num2;
}
else
{
Console.WriteLine("You Did Not Enter An Integer Greater Than the First Integer, Please Enter Your Integers Again.");
Environment.Exit(0);
}
*/ int index = 1;
int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)
{
numArray[index] = i;

Console.WriteLine(" index: {0} assignment: {1}", index, i);
index++;
Console.WriteLine("index: {0}",index);
}

Console.WriteLine("value: {0}", numArray[40]);

/* Prime myprime = new Prime();

if (myprime.IsPrime(numArray[12]) == 1)
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("False");
} */


Prime myprime = new Prime();


int value = 0;
for (int y = 1; y <= num2; y++)
{
if (myprime.IsPrime(numArray[y]) == 1)
{
value = numArray[y];
Console.Write("{0} \t", value);

}

}

最佳答案

您目前正在尝试迭代到并包括数组的大小。在 C# 中,数组是从 0 开始索引的。所以这个:

int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)

应该是:

for (int i = num1; i < num2; i++)

请注意,要获取第一个元素数组,num1 必须为 0,而不是 1。

同样,您将 index 初始分配为 1 应该改为 0。基本上你需要检查你所有的代码(目前它很困惑,很多位被注释掉了)并检查你假设数组是基于 1 的所有地方,而不是改变你的代码,因为它们是基于 0 的。

(当然,在某些情况下,您可能只想使数组变大。如果您想要一个逻辑上包含值 1 到 x 的数组,您可以创建一个大小为 x 的数组,然后从每个数组中减去一个一直索引,或者创建一个大小为 x + 1 的数组。)

关于c# - 遍历数组时 C# 中的索引超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com