2012-07-03 37 views
1

試圖迭代此for循環和從用戶輸入int到數組中。我得到一個錯誤,不明白爲什麼..C#使用未分配的本地變量.... confused

錯誤:1只使用未分配的局部變量「數組」的

using System; 

namespace Lab16 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] array; 
     int value; 

     Console.Write("How big of an Array? "); 
     int arraySize = int.Parse(Console.ReadLine()); 

     for (int i = 0; i <= arraySize; i++) 
     { 
      Console.Write("First Value: "); 
      value = int.Parse(Console.ReadLine()); 
     --> array[i] = Convert.ToInt32(value); 

     } 
    } 
} 
} 
+2

您未初始化陣列。 –

回答

7

你的數組變量未初始化。寫這應該修復它:

int[] array = new int[arraySize]; 

(注意,這當然需要去你從控制檯讀取ARRAYSIZE後...)

int value; 
Console.Write("How big of an Array? "); 
int arraySize = int.Parse(Console.ReadLine()); 
int[] array = new int[arraySize]; 

而更多的一個問題...你的for循環正如書面將會超出界限。應該是這樣的:

for (int i = 0; i < arraySize; i++) 
2

本地變量在C#中不initialized /隱含分配。在你的代碼片段中,你需要創建一個數組。

int[] array=new int[arraySize]; 
1

你需要初始化數組,一旦你知道它應該是多大。

您還需要遍歷從0arraySize-1 - 所以我改變了你的<=<

Console.Write("How big of an Array? "); 
    int arraySize = int.Parse(Console.ReadLine()); 
    int[] array = new int[arraySize]; 
    for (int i = 0; i < arraySize; i++) 
    { 
     Console.Write("Value: "); 
     int value = int.Parse(Console.ReadLine()); 
     array[i] = Convert.ToInt32(value); 
    } 

如果用戶的長度進入10,您將初始化數組長度10 - 然後你可以訪問元素09,這是10個獨立的元素。

0

您需要初始化數組,但是在知道它需要的大小之前先聲明它。

using System; 


namespace Lab16 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     int arraySize; 
     int arrayValue; 

     Console.WriteLine("How big of an Array? "); 

     while(!int.TryParse(Console.ReadLine(), out arraySize)) 
     { 
      Console.WriteLine("How big of an Array? "); 
     } 

     int[] array = new int[arraySize]; 
     for (int i = 0; i < arraySize; i++) 
     { 
      Console.WriteLine(string.Format("Value of element {0}: ", i)); 
      while(!int.TryParse(Console.ReadLine(), out arrayValue)) 
       Console.WriteLine(string.Format("Value of element {0}: ", i)); 
      array[i] = arrayValue; 
     } 
    } 
} 
}