问答详情
源自:6-1 练习题目

没输错啊!是怎么回事呢?

static void Main(string[] args)
         {
            int max=0;
           int t=0;
            string [,]a=new string[8,2]={ { "吴松", "89" }, { "钱东宇", "90" }, { "伏晨", "98" }, { "陈陆", "56" }, { "周蕊", "60" }, { "林日鹏", "9" }, { "何昆", "93" }, { "关欣", "85" } };
            for(int i=0;i<=a.GetLongLength;i++){
                    if(max<Convert.ToInt32(a[i,1])){
                        max=Convert.ToInt32(a[i,1]);
                        t=i;
                    }
            }
            Console.WriteLine("分数最高的为:{0},分数是{1}",max,a[i,1]);
        }

——————————————————————————————————————————

                为什么提示{ { "吴松", "89" }, { "钱东宇", "90" }, { "伏晨", "98" }, { "陈陆", "56" }, { "周蕊", "60" }, { "林日鹏", "9" }, { "何昆", "93" }, { "关欣", "85" } };   是无效表达式项呢,

提问者:慕无忌6385260 2017-03-18 19:33

个回答

  • 一念征途
    2017-06-24 00:14:28

                int max = 0;
                int t = 0;
                string[,] a = new string[8, 2] { { "吴松","89" },{ "钱东宇", "90" }, { "伏晨", "98" }, { "陈陆", "56" }, { "周蕊", "60" }, { "林日鹏", "9" }, { "何昆", "93" }, { "关欣", "85" } };
                Console.WriteLine("a的长度:"+a.Length);
                for (int i = 0; i < a.Length/2; i++)
                {
                    if (max < Convert.ToInt32(a[i, 1]))
                    {
                        max = Convert.ToInt32(a[i, 1]);
                        t = i;
                    }
                }
                Console.WriteLine("分数最高的为:{0},分数是{1}", max, a[t, 1]);

    你好,第一行:

    new string[8,2]=

    后面的= 不应该加, 需要删掉;

    第二:a的长度,不是8,也不是2,而是16,如果按你之前写的话,会数组越界,所以需要改成16的一半,也就是a的长度除以2;

    第三,数组的长度 用a.Length 就可以了

    第四:最后一行:

       Console.WriteLine("分数最高的为:{0},分数是{1}",max,a[i,1]);

    a[i,1]需要改成a[t, 1], i因为你是在for循环中定义的,所以在for循环以外,i就不能用了。

    祝你学习顺利!


  • 天涯雪狼
    2017-03-18 21:45:03

    赋初值的{}前没有=号