Home > Net >  How can I check for integers in list and print the index of them?
How can I check for integers in list and print the index of them?

Time:04-01

so my problem is that I don't know how to go forward in the list and print the next same integer if there is one.

Here is what I have at the moment:

while (list.Contains(input1))
{
    Console.WriteLine(input1   " is at index "   list.IndexOf(input1))
}

I am trying to list all of the integers that are in the list and print the index of them. But not remove after finding one of the integers (this was at least my first idea.).

CodePudding user response:

IndexOf has an overload with two parameters, which allows you to start searching at a later position in the list.

Since this is obviously a learning exercise, I won't spoil it by providing the full code, but rather suggest that you try to implement the following algorithm:

  1. Find the index of input starting at position 0.
  2. If not found (i.e., IndexOf returns -1): we're done. Otherwise:
  3. Print and remember that index.
  4. Start again at step 1, but this time, don't start searching at 0 but at the index you remembered 1.

CodePudding user response:

You can do the following:

go through the list/array using for statement

for(int i=0; i < list.length; i  ) // loop though list 

then inside the loop check the value of the current item using if statement:

if(list[i] == input1)
  //do smothing

The list[0] represent the first item in the array, which means the index is 0. so in the example above the i will be the current index so long that you in the loop.

I didn't write the full code for learning purpose in reference to @Heinzi answer. Hope that could be helpful!

CodePudding user response:

This is an implementation possibility. It is longer than it has to be, but it makes it clearer for beginners how one could tackle this problem.

Since you wanted to only show numbers that come up more than once here is an implementation method. If you want to show numbers that come up only once too just erase everything about lastindex

List<int> yourlist = new List<int> { 1,1,1,1,1,11,2,3,3,4,4,5 };

int input = 0;
input = Convert.ToInt32(Console.ReadLine());

var index = yourlist.IndexOf(input); 
//this checks if your input  is in the list
var lastindex = yourlist.LastIndexOf(input); 
//this does the same but it searches for the last implementation of your input

if (index != -1 && lastindex != index) 
//this if checks if your number comes up more than once. IndexOf returns -1 if there is no occurence of your input
{
    Console.Write($"the index of {input} is {index}");

    for (int i = index 1; i <= yourlist.Count; i  ) 
//this loop takes the position of the first occurence of your number and then counts up from there
    {
        var tempindex = yourlist.IndexOf(input, i);
        if (tempindex != -1) 
//this if lets everything except -1 through
        {
            Console.Write($" and {tempindex}");
        }
    }
}
else
{
    Console.WriteLine("your number cannot be found twice in the list");
}
  •  Tags:  
  • c#
  • Related