访问Array out side循环的元素

时间:2014-08-26 11:01:13

标签: c# arrays

我已经声明了一个整数数组,其中我存储了一个数字的因子.....我希望该数组在它的元素中打印数字,但我也失败了;有没有办法访问数组及其声明循环之外的元素?

class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Enter number : ");
            int num = Convert.ToInt32(Console.ReadLine());


            for (int i = 1; i <= num; i++) 
            {
                int[] factor = new int[i];

                if (num % i == 0) 
                {
                    Console.WriteLine("Number going in i: " + i);
                    factor[i - 1] = i;
                };
            }


            //Not working
            for (int i = 0; i < factor.length; i++) 
            {
                Console.WriteLine(factor[i]);
            }

        }
    }

3 个答案:

答案 0 :(得分:3)

第一个factor循环中的for仅存在于for循环的范围内。第一个循环也会在每次迭代时覆盖数组。

您需要在父范围内声明并初始化它。

int[] factor = new int[num];

for (int i = 1; i <= num; i++) 
{
    factor[i] ...
}

for (int i = 1; i <= factor.length; i++) 
{
    factor[i] ...
}

另请参阅示例3.7 Scopes (C#)confused with the scope in c#

答案 1 :(得分:0)

class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Enter number : ");
        int num = Convert.ToInt32(Console.ReadLine());

        int[] factor ; // <-- out of for loop

        for (int i = 1; i <= num; i++) 
        {
           factor  = new int[i];

            if (num % i == 0) 
            {
                Console.WriteLine("Number going in i: " + i);
                factor[i - 1] = i;
            };
        }


        //Not working
        for (int i = 0; i < factor.length; i++) 
        {
            Console.WriteLine(factor[i]);
        }

    }
}

答案 2 :(得分:0)

class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Enter number : ");
            int num = Convert.ToInt32(Console.ReadLine());
             int[] factor ;
            for (int i = 1; i <= num; i++) 
            {
                factor = new int[i];

                if (num % i == 0) 
                {
                    Console.WriteLine("Number going in i: " + i);
                    factor[i - 1] = i;
                };
            }


            //Not working
            for (int i = 0; i < factor.length; i++) 
            {
                Console.WriteLine(factor[i]);
            }

        }
    }

请参阅此链接了解scopes

相关问题