2016-05-28 5 views
0

У меня есть массив с 3 элементами, я использую for -loop для удаления "1", "2", но if -condition всегда false. В чем проблема?Как я могу получить элемент списка

string[] listCountAnwser = {"1", "2", "3"}; 
List<string> listCountAnwsers = new List<string>(listCountAnwser); 
for (int i = 0; i < listCountAnwsers.Count; i++) 
{ 
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i++])) 
    { 
     listCountAnwsers.Add(listCountAnwser[i]); 
    } 
} 

ответ

2

Несколько вещей попались на мой взгляд.
Сначала вы ошибаетесь, чтобы использовать оператор инкремента. Для того, чтобы убедиться, что запустить этот код:

for (int i = 0; i < listCountAnwsers.Count; i++) 
    Console.WriteLine(listCountAnwsers[i] + "\t" + listCountAnwsers[i++]); 

выход будет как:

1 1 
3 3 

Вот почему ваш код никогда не входит в if -условию.
Другая проблема заключается в том, что вы удаляете элементы. Это влечет за собой изменение свойства списка listCountAnwsers.Count. Для того, чтобы убедиться:

for (int i = 0; i < list.Length; i++) 
{ 
    listCountAnwsers.Remove(listCountAnwsers[i]); 
    Console.WriteLine(listCountAnwsers.Count); 
} 

выход:

2 
1 

Тогда исключение как argument out of range. В самом деле. Также вы можете получить такое исключение, если попробуете что-то вроде этого:

if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i + 1])) 
    listCountAnwsers.Remove(listCountAnwser[i]); 

Таким образом, решение вашей проблемы зависит от того, что вам нужно. Какие элементы вы хотите иметь в результате? Просьба уточнить

+0

Это моя ошибка. Мой код должен быть «listCountAnwsers.Add (listCountAnwser [i]); –

+0

@BinhHuynh Хорошо, вы можете уточнить свой вопрос, если у вас все еще есть некоторые проблемы. И я постараюсь вам помочь. По-видимому, проблема решена только путем замены 'i ++' на 'i + 1' .. – red0ct

+0

Я заменил i ++ на i + 1 и работал Спасибо за вашу помощь! –

0

попробуйте это. i++ Увеличьте значение i после проверки состояния. Поэтому вам необходимо использовать i+1

string[] listCountAnwser = {"1", "2", "3"}; 
List<string> listCountAnwsers = new List<string>(listCountAnwser); 
for (int i = 0; i < listCountAnwsers.Count; i++) 
{ 
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i+1])) 
    { 
     listCountAnwsers.Add(listCountAnwser[i]); 
    } 
} 
+0

спасибо, брат! Я исправил это :) глупая ошибка –

Смежные вопросы