2012-07-03 39 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; 
     } 
    } 
} 
}