我正在为我的课堂作业编写程序,而且我被困了。
程序会询问你要编写多少个数字,然后当你完成它时会从数组中计算奇数和偶数(我的意思是int[] i
< - 其中i [1] i [2]等。 )。但它也必须有一个"停止"功能 - 当你写停止它应该停止并完成它的工作 - 但问题是当我制作一个例如120数字表时,当我在第8个数字上停止时,它将数字从9-120算作" 0"它说它是偶数。我该如何修理?
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
int sum1 = 0,
sum2 = 0;
start:
Console.WriteLine("How many numbers?");
string lenght = Console.ReadLine();
int Arraylenght = 0;
bool test = int.TryParse(lenght, out Arraylenght);
if (test == false)
{
Console.WriteLine("\n>> Error!\n");
goto start;
}
int[] Numbers = new int[Arraylenght];
for (int i = 0; i < Arraylenght; i++)
{
start2:
Console.WriteLine("Enter number #{0}:", i + 1);
String UserInput = Console.ReadLine();
bool test2 = int.TryParse(UserInput, out Numbers[i]);
if (test2 == false && UserInput != "stop")
{
Console.WriteLine("\n>> Error!\n");
goto start2;
}
if (UserInput == "stop")
{
Console.WriteLine("\n>> Stopped!\n");
Arraylenght = i;
}
}
foreach (int number in Numbers)
{
if (number % 2 == 0) sum1 = sum1 + 1;
if (number % 2 != 0) sum2 = sum2 + 1;
}
Console.WriteLine(sum1 + " even numbers" + " \n" + sum2 + " odd numbers" );
Console.ReadKey();
}
}
}
答案 0 :(得分:0)
foreach不会停止你的新ArrayLength,它会停止它的数组结束。所以你不应该使用你应该使用的foreach。那意味着; 你应该用这个:
for(int x =0; x<=Arraylenght;x++)
{
if (Numbers[x] % 2 == 0) sum1 = sum1 + 1;
if (Numbers[x] % 2 != 0) sum2 = sum2 + 1;
}
Console.WriteLine(sum1 + " even numbers" + " \n" + sum2 + " odd numbers" );
而不是
foreach (int number in Numbers)
{
if (number % 2 == 0) sum1 = sum1 + 1;
if (number % 2 != 0) sum2 = sum2 + 1;
}
Console.WriteLine(sum1 + " even numbers" + " \n" + sum2 + " odd numbers" );
答案 1 :(得分:0)
初始化数组时,每个项目都设置为0,因此得到0 % 2 == 0
,其值为true。您现在有两个选项:要么只读取要显示的数字,直到达到指定的停止点,或者使用基本上是强类型动态数组的List<int>
。
编辑:
您还可以使其成为可为空的int数组,这使得数组的任何值都可以表示空值。由于null % 2
评估为null
,因此您必须进行的唯一其他编辑是在最后测试奇数。