2016-02-03 2 views
0

Я работаю над этой простой программой C#, добавляющей элементы в массив. Я разрешаю пользователю вводить 5 номеров, и если пользователь вводит INVALID, у меня есть сообщение для этого. Моя проблема в том, что пользователи вводят недопустимый номер или нет. Я все еще хочу добавить 5 чисел в свой массив.Как добавить элементы в массив на основе условия?

Мой код работает, но предположим, что пользователь вводит 3 числа, а затем 2 слова, и я получаю ТОЛЬКО 3 числа, но я хочу, чтобы 5 чисел ни на что. Что я делаю не так?

Вот мой код:

 int[] numbers = new int[5]; 

     for (int i = 0; i < 5; i++) 
     { 
      Console.WriteLine("Enter a number: "); 
      string c = Console.ReadLine(); 
      int value; 
      if (int.TryParse(c, out value)) 
      { 
       numbers[i] = value; 
      } 
      else 
      { 
       Console.WriteLine("You did not enter a number\n"); 
      } 
     } 

     for (int i = 0; i < numbers.Length; i++) 
     { 
      Console.Write(numbers[i] + " "); 
     } 

ответ

3

Вы можете уменьшить количество увеличивается на 1, когда пользователь вводит неправильный/без номера.

Также обратите внимание, что вы в настоящее время читаете ввод только для 4 (не 5, как указано в описании вопроса).

int[] numbers = new int[4]; 

for (int i = 0; i < 4; i++) 
{ 
    Console.WriteLine("Enter a number: "); 
    string c = Console.ReadLine(); 
    int value; 
    if (int.TryParse(c, out value)) 
    { 
     numbers[i] = value; 
    } 
    else 
    { 
     i--; 
     Console.WriteLine("You did not enter a number\n"); 
    } 
} 

for (int i = 0; i < numbers.Length; i++) 
{ 
    Console.Write(numbers[i] + " "); 
} 
+0

Большое спасибо! это сработало. – progx

+0

Рад, что это помогло вам, пожалуйста, отметьте это как ответ, если это поможет и ответит на ваш вопрос. –

+0

Да, я буду! stackoverflow заставляет меня ждать еще 5 минут, но я буду отмечать его как правильный ответ за 5 минут. Еще раз спасибо! – progx

3

попробовать с помощью do-while

int[] numbers = new int[4]; 


    int i = 0; 
    do 
    { 
     Console.WriteLine("Enter a number: "); 
     string c = Console.ReadLine(); 
      int value; 
      if (int.TryParse(c, out value)) 
      { 
       numbers[i] = value; 
       i++; 
      } 
     else 
      { 
       Console.WriteLine("You did not enter a number\n"); 
      } 

    } while (i < 5); 

    Console.WriteLine("\nYour entered numbers are\n"); 
     for (int j = 0; j < numbers.Length; j++) 
     { 
      Console.Write(numbers[j] + " "); 
     } 
0

Вы можете уменьшить код с помощью while цикла. Кроме того, его лучше заменить последнюю for петлю на foreach

int[] numbers = new int[5]; 
int i = 0; 
while (i < 5) 
{ 
    Console.WriteLine("Enter a number: "); 
    string c = Console.ReadLine(); 
    int value; 
    if (!int.TryParse(c, out value)) continue; 
    numbers[i] = value; 
    i++; 
} 

foreach (int t in numbers) 
    Console.Write(t + " "); 
0

Вы можете использовать в то время как петли здесь. См. Приведенный ниже код

 int[] numbers = new int[5]; 
    int i = 0; 
    while (i < 5) { 
     Console.WriteLine ("Enter a number: "); 
     string c = Console.ReadLine(); 
     int value; 
     if (int.TryParse (c, out value)) { 
      numbers[i] = value; 
      i++; 
     } else { 
      Console.WriteLine ("You did not enter a number\n"); 
     } 
    } 

    for (i = 0; i < numbers.Length; i++) { 
     Console.Write (numbers[i] + " "); 
    } 
Смежные вопросы