2016-09-22 17 views
-1

このコードで何が起きているのか分かりません... 最初のif文で実行されたときに...すべてが良いです しかし、 ...エラーがあります入力文字列の解析でエラーが発生しました。#

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に渡すとクラッシュするため、2番目の文字列には到達できません。代わりにInt32.TryParseを使用します。 – Steve

答えて

0

私はあなたが存在しないインデックスを見ていると仮定します。

あなたの言語はわかりませんが、numbersArray [0]は最初のインデックスで、numbersArray [1]は2番目のインデックスです。最初の数字を入力すると、存在しないnumbersArray [1]が見えます。

+0

いいえ、iの値が0より大きいかどうかをチェックします。 – Steve

0

あなたはnumInput = ""

EDITなどの数字wihout文字列を解析することはできません。このコードを試してみてください。

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にDigitsのみがあるかどうかをチェックします。その場合、メソッドの戻り値はtrueです。あなたは私の記事を回答としてマークできますか? –

関連する問題