1

尝试使用此 for 循环进行迭代并将用户的 int 输入到数组中。我收到一个错误,不明白为什么..

错误:错误 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);

        }
    }
}
}
4

4 回答 4

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++)
于 2012-07-03T02:16:20.440 回答
2

C# 中的局部变量不是initialized/assigned 隐式的。在您的代码片段中,您需要创建一个数组。

 int[] array=new int[arraySize];
于 2012-07-03T02:16:35.080 回答
1

一旦知道数组应该有多大,就需要初始化数组。

您还需要从 to 迭代0-arraySize-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 个单独的元素。

于 2012-07-03T02:18:13.340 回答
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;
        } 
    } 
} 
}
于 2012-07-03T02:24:38.060 回答