2013-03-01 56 views
0

我目前正在編寫一個程序,需要一個人名和5個變量。然後用這5個變量我負責找到平均值/樣本方差。我當前的代碼如下:輸入字符串格式不正確C#

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    namespace ConsoleApplication1 
    { 
     class Program 
     { 
     static void Main(string[] args) 
     { 
      string userName = ""; 
      string variables = ""; 
      int[] vars = parseVariableString(variables); 
      vars = new int[5]; 
      int sum = 0; 

      Console.Write("Please enter your name: ", userName); 
      userName = Console.ReadLine(); 
      Console.ReadLine(); 
      Console.Write("Please enter 5 numbers with a space or coma inbetween: ", vars); 

      for (int i = 0; i < vars.Length; i++) 
      { 
       int number = vars[i]; 
       sum += number; 
      } 
      float avg = sum/(float)vars.Length; 
      float variance = 0; 
      for (int i = 0; i < vars.Length; i++) 
      { 
       int number = vars[i]; 
       float f = number - avg; 
       variance += (float)Math.Pow(f, 2); 
      } 
      float sv = variance/(vars.Length - 1); 

      Console.Write(" Your name is: ", userName); 
      Console.ReadLine(); 
      Console.Write("The average of your numbers is: ", avg); 
      Console.ReadLine(); 
      Console.Write("The sample variance of your numbers is: ", sv); 
      Console.ReadKey(); 
     } 

     private static int[] parseVariableString(String variables) 
     { 
      String[] varArray = variables.Split(' ', ','); 
      int[] intArray = new int[varArray.Length]; 

      for (int i = 0; i < varArray.Length; i++) 
      { 
       String variable = varArray[i]; 
       int integer = Convert.ToInt32(variable); 
       intArray[i] = integer; 
      } 
      return intArray; 
     } 
    } 
} 

我收到了「輸入字符串格式不正確」的錯誤「INT整數= Convert.ToInt32(變量);」我不明白爲什麼我得到這個錯誤。我在網上查找它的含義,很多人都說使用int.parse,但是從我讀到的內容中得到這個結果是因爲該變量沒有認識到它存在與之相關的值。任何幫助將不勝感激。

+2

這意味着它不只是數字,它不能將其轉換爲int。 – 2013-03-01 18:32:41

+0

拋出異常時'variable'的值是多少? – vlad 2013-03-01 18:33:49

+0

更好的使用TryParse方法,它會返回指示字符串是否可以被解析(轉換爲int32)的bool值。 – 2013-03-01 18:33:50

回答

5
string variables = ""; 
    int[] vars = parseVariableString(variables); 

您正在聲明一個空字符串,然後嘗試將該字符串轉換爲一個int。

private static int[] parseVariableString(String variables) 
{ 
    String[] varArray = variables.Split(' ', ','); 
    int[] intArray = new int[varArray.Length]; 

    for (int i = 0; i < varArray.Length; i++) 
    { 
     String variable = varArray[i]; 
     int integer = Convert.ToInt32(variable); 
     intArray[i] = integer; 
    } 
    return intArray; 
} 

以及當你傳入一個空字符串時,沒有任何東西需要分割,因此你的數組是空的。

+0

啊,好吧,這是有道理的。我沒有意識到它是空的。所以我假設當前的流量是不正確的。我想,當運行時,用戶將被要求輸入他們的姓名和數字,然後填寫數組。 – jimjam456 2013-03-01 18:39:10

+0

很高興我能幫助你。 – MyCodeSucks 2013-03-06 20:49:14