我写了这个简单的程序:
class Program
{
static void Main(string[] args)
{
Console.Write("Number of elements in the array: ");
int numberOfElements = int.Parse(Console.ReadLine());
int[] array = new int[numberOfElements];
for(int i = 0; i < numberOfElements; i++)
{
Console.Write($"Element no {i+1}: ");
array[i] = int.Parse(Console.ReadLine());
}
for(int i = 0; i < array.Length; i++)
{
int count = 0;
for(int j = 0; j < array.Length; j++)
{
if(array[i] == array[j])
{
count++;
}
}
Console.WriteLine($"{array[i]} appears " + count + " times");
}
}
}
}
是否有任何选项可使显示的值仅打印一次?例如,如果出现了3次-该消息显示3次。但是,如果出现更多次,是否可以使其显示一次?
最佳答案
我的第一个想法与Jon Skeet的评论相同,因为它暗示了其简单性。
我们的想法是将我们已经计算(匹配)的值设置为null。
从开发人员的角度来看,这非常简单,并且与OP的代码不会有太大差异。
Console.Write("Number of elements in the array: ");
int numberOfElements = int.Parse(Console.ReadLine());
int?[] array = new int?[numberOfElements];
for (int i = 0; i < numberOfElements; i++)
{
Console.Write($"Element no {i + 1}: ");
array[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < array.Length; i++)
{
int count = 0;
int? current = array[i];
if (array[i] != null)
{
for (int j = 0; j < array.Length; j++)
{
if (current == array[j])
{
count++;
array[j] = null;
}
}
Console.WriteLine($"{current} appears " + count + " times");
}
}
int?[]
定义可为空的值类型。因此,数组中的每个项目都可以具有null或int值-文档here。关于c# - C#:如何检测数组中的重复值并以使得每个重复值仅处理一次的方式处理它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64167921/