我正在做一个家庭作业问题,我需要编写一个输入五个数字的应用程序,每个数字都在 10 到 100 之间,包括 10 到 100。在读取每个数字时,仅当它不与已读取的数字重复时才显示它。提供最坏的情况,其中所有五个数字都不同。使用尽可能小的数组来解决这个问题,并在用户输入每个新值后显示完整的唯一值集。
到目前为止,我所拥有的一切正常。只是,如果所有五个数字都是唯一的,一旦程序运行,我就会不断收到未处理的错误。它告诉我索引超出了数组的范围。只有我不确定它为什么这样做,而且我的 for 循环中看不到任何错误。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ten_Seven_Thirteen
{
class Program
{
static void Main(string[] args)
{
const int SIZE = 5;
int[] nums = new int[SIZE];
int a;
int b;
int c = 0; //c is the amount of numbers currently entered
int number;
Console.WriteLine("Input five numbers between 10 and 100 (inclusive): \n");
for (int count = 0; count < SIZE; count++)
{
number = Convert.ToInt32(Console.ReadLine());
if (number >= 10 && number <= 100) //Verify whether or not the number meets the criteria
{
for (a = 0; a < c; a++)
{
// The following if condition checks for duplicate entrees.
if (number == nums[a])
{
Console.WriteLine("Duplicate number.\n");
break; //Breaking the loop prevents the duplicate number from entering the array
}
} // end for
// if number is not a duplicate, enter it in array
if (number != nums[a])
{
nums[c++] = number;
} // end if - not duplicate
Console.WriteLine("The non-duplicate values are:\n");
//display array of unique numbers
for (b = 0; nums[b] != 0 && b < SIZE; b++)
{
Console.WriteLine(nums[b]);
} // end for loop and display array
} // end if - validate and test
else
Console.WriteLine("invalid number.");
Console.WriteLine("\n");
} // end for - get 5 numbers
}
}
}// end Ten_Seven_Thirteen