Я вижу вашу проблему, я попытаюсь объяснить:
Почему он печатает 3 дважды:
Когда программа выполняет итерацию , он сначала видит, что вы набрали Dime
. Таким образом, он перейдет к оператору if и go «о, ввод равен этому текущему значению итерации» и выплюнет 3, поскольку это 4-й элемент в списке (C# коллекции - 0 на основе индекса, что означает элемент 1 в коллекция имеет индекс 0). Насколько я могу судить, это ожидаемое поведение. Ваша проблема в том, что когда вы увидите, что ваш ввод равен 2-му вхождению «Dime», он снова получит индекс, однако C# не знает, какой из них вы хотите, поэтому возвращает первое его вхождение, которое - это индекс 3, и поскольку Dime появляется дважды, вы дважды напечатаете 3.
Что касается другой вашей проблемы:
Программа сообщает, что она не удалась потому что во время итерации первый элемент не равен вашему вводу, поэтому он отмечает isNotInList
как истинный и никогда не устанавливает значение false снова, если элемент найден. Что вам, вероятно, следует сделать, так это вырваться из l oop, когда вы найдете соответствующий элемент, и установить isNotInList
в false, когда вы это сделаете.