none
循环内的数取不到 RRS feed

  • 问题

  •     我想输入一个数组:例如9,8,6,4,6,9,7。得到该数组最大的数以及这个最大的数在这个数组中的位置,把得到的这两个数字放到一个新的数组中,则上面的数组结果为int[] {9,5}。

        我写了个函数MaxIntIndex(),发现循环中我得到的值不能成为return的返回值。我也知道这是因为变量的定义域引起的问题,但我还真不知道有什么最简单的方法可以解决这个问题!

        请大大们帮忙看看!最好能够有具体的代码!
    static int[] MaxIntAndIndex(int[] ints)
            {
                int pInt = ints[0];
                int pIndex = 0;
                int[] pReturnInt;
                for (int i = 0; i < ints.Length; i++)
                {
                    if (pInt < ints[i])
                    {
                        pInt = ints[i];
                        pIndex = i;
                    }
                    pReturnInt = new int[2] { ints[i], i };
    
                }
                return pReturnInt;
                
            }



    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年11月2日 7:01

答案

全部回复

  • namespace CSharp
    {
        public class MainTest
        {
            static int[] MaxIntAndIndex(int[] ints)
            {
                int pInt = ints[0];
                int[] pReturnInt=new int[2];
                for (int i = 1; i < ints.Length; i++)
                {
                    if (pInt < ints[i])
                    {
                        pReturnInt[0] = ints[i];
                        pReturnInt[1] = i;
                        pInt = ints[i];
                    }
                }
                return pReturnInt;
            }
    
            static void Main(string[] args)
            {
                var result = MaxIntAndIndex(new int[] { 1, 2, 3, 5, 4, 8, 6, 9, 0 });
                Console.WriteLine(result[0]);
                Console.WriteLine(result[1]);
            }
        }
    }

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    • 已建议为答案 梁猛 2012年11月2日 8:24
    • 已标记为答案 linjiangxian11 2012年11月6日 4:42
    2012年11月2日 7:24
    版主
  • 是呀,是因为变量定义域的问题,实例对象的生命周期在for循环里头,如果在for循环外先实例一个对象就可以了, int[] pReturnInt=new int[2];
    还有你的方法显然也有问题,返回的数字肯定不是你希望得到的数字。
    2012年11月9日 4:55