2016-09-22 5 views
-1

i dont know whats wronng с этим кодом ... , когда он выполняется с помощью первого оператора if ... все хорошо , но если он пройдет второй, если ... есть ошибкаОшибка при разборе строки ввода до значения int в C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Enter a number and click enter, continue doing this process "); 
     Console.WriteLine("When you finish, just click enter without giving any input"); 
     int i = 0; 
     int[] numbersArray; 
     List<int> numbersList = new List<int>(); 

     while (true) 
     { 
      String numInput = Console.ReadLine(); 
      numbersList.Add(Int32.Parse(numInput)); 
      numbersArray = numbersList.ToArray(); 
      if (i >= 1) 
      { 
       if (numbersArray[i] < numbersArray[i - 1]) 
       { 
        Console.WriteLine("Your series is not going up!"); 
        break; 
        Environment.Exit(0); 
       } 

       if (numbersArray[i] > numbersArray[i - 1]) 
       { 
        if (numInput == "") { 
         break; 
        } 
       } 
      } 
      i++; 
     } 
      Console.WriteLine("You entered this series: "); 
      for (int j = 0; j < numbersArray.Length; j++) 
      { 
       Console.WriteLine(" " + numbersArray[j]); 
      } 
      Console.WriteLine("The length of the series youve entered is: " + numbersArray.Length); 


    } 
} 
+3

Что ошибка? Также вы отметили python и c. – garfbradaz

+4

Что это связано с Java, Android, Python или C? –

+0

Вы не можете добраться до второго, если потому, что если вы дадите пустую строку Int32.Parse, она сработает. Вместо этого используйте Int32.TryParse – Steve

ответ

0

Я предполагаю, что вы пытаетесь посмотреть на индекс, который не существует.

Не уверен в вашем языке, но я думаю, что числоArray [0] - это первый индекс, а numbersArray [1] - второй. Поэтому, когда вы вводите свой первый номер, вы пытаетесь посмотреть на numArray [1], которого не существует.

+0

Нет, у него есть проверка на значение i, которое больше нуля. – Steve

0

Вы не можете разобрать строку цифр, как легко заменяется без numInput = ""

EDIT: Попробуйте этот код:

static void Main(string[] args) 
    { 
     Console.WriteLine("Enter a number and click enter, continue doing this process "); 
     Console.WriteLine("When you finish, just click enter without giving any input"); 
     int i = 0; 
     int[] numbersArray = new []{1}; 
     List<int> numbersList = new List<int>(); 

     while (true) 
     { 

      String numInput = Console.ReadLine(); 
      if (numInput == null || !numInput.All(char.IsDigit)) continue; 

      if (numInput != "") 
      { 
       numbersList.Add(Int32.Parse(numInput)); 
       numbersArray = numbersList.ToArray(); 

       if (i >= 1) 
       { 
        if (numbersArray[i] < numbersArray[i - 1]) 
        { 
         Console.WriteLine("Your series is not going up!"); 
         break; 
         Environment.Exit(0); // <-- Code is unreachable! 
        } 
       } 
      i++; 
      } 
      else if(i >= 1) 
      { 
       break; 
      } 
     } 

     Console.WriteLine("You entered this series: "); 
     foreach (int t in numbersArray) 
     { 
      Console.WriteLine(" " + t); 
     } 
     Console.WriteLine("The length of the series youve entered is: " + numbersArray.Length); 
     Console.ReadLine(); 

    } 
+1

Большое вам спасибо ... –

+0

что это! NumInput.All (char.IsDigit) –

+0

Извините, меня не было. ! является булевым инвертором. numInput.All (char.IsDigit) проверяет, имеет ли строка numInput только цифры. Если в этом случае возвращаемое значение метода истинно. Не могли бы вы пометить мой пост как ответ !? –

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