如何在c#console
中的数组中显示索引位置的重复元素我有这个问题 在简单的c#中 用户给了我5个数字并存储在一个数组中,现在我给了用户选项来检查其位置的数字
现在的问题是,如果用户之前存储的5个数字中有2个或更多相同的数字..我是如何显示这两个位置的?
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[5];
int check = 0;
int position = 0;
Console.WriteLine("Enter 5 elements");
for (int i = 0; i < 5; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
int value;
Console.WriteLine("Enter no to search");
value = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < 5; i++)
{
if (value==arr[i])
{
{
check = 1;
position = i;
}
}
}
if (check == 1)
{
Console.WriteLine("number is found At position " +position);
}
else
{
Console.WriteLine("not found");
}
Console.ReadKey();
}
}
}
请帮帮我
如果用户输入的数字为1 2 3 1 2 并存储它们 然后当用户搜索nos 它应该显示在第1和第2位置的数字? 帮助
答案 0 :(得分:0)
您可以在检查循环中输出找到的数字的索引,如下所示:
bool check = false;
for (int i = 0; i < 5; i++)
{
if (value==arr[i])
{
check = true;
Console.WriteLine("number is found At position {0}", i);
}
}
if (!check) Console.WriteLine("Number not found at all.");
或者您将索引保存在列表中并在之后输出:
List<int> foundIndices = new List<int>();
for (int i = 0; i < 5; i++)
{
if (value==arr[i])
foundIndices.Add(i);
}
if (foundIndices.Count > 0)
foreach(int index in foundIndices)
Console.WriteLine("Number found at {0}", index);
else
Console.WriteLine("Number not found at all.");
答案 1 :(得分:0)
要查找重复内容,您可以尝试使用 Linq :
onCreate()
答案 2 :(得分:0)
//Used to track position of found numbers
var currentPosition = 0;
//Keeps the indexes
var foundIndexes = new List<int>();
//Some dummy data
int[] numbers = {1, 2, 3, 5, 2, 3, 3, 5, 7};
for (var i = 0; i < numbers.Length; i++)
{
if (numbers[i] == value)
{
foundIndexes.Add(i);
}
}
//can use the LINQ for each if you like it better (I do)
foundIndexes.ForEach(index =>
{
Console.WriteLine("number is found At position " + index);
});
答案 3 :(得分:0)
这是另一个如何使用LINQ执行此操作的示例:
var appearsMoreThanOnce = arr
.Distinct()
.ToDictionary(k => k, v => Enumerable.Range(1, arr.Length)
.Where(i => arr[i-1] == v))
.Where(kvp => kvp.Value.Count() >= 2);
foreach (var number in appearsMoreThanOnce)
Console.WriteLine(number.Key + " appears at: " + string.Join(",", number.Value));
LINQ可能非常令人生畏,特别是如果你是新手 - 我可以进一步详细说明这个解决方案如何有效。