A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

using System;
using System.Collections.Generic;
using System.Text;

namespace Student
{
    class Program
    {
        static void Main(string[] args)
        {
            Student[] ss = new Student[5];//这是一个学生类


            for (int i = 0; i < ss.Length; i++)
            {
                            Console.Write("请输入学号:");
                ss[i]. num = Convert.ToString(Console.ReadLine());
                Console.Write("请输入姓名:");
                 ss[i]. name = Convert.ToString(Console.ReadLine());
                Console.Write("请输入数学:");
                ss[i]. math = Convert.ToInt32(Console.ReadLine());
                Console.Write("请输入英语:");
              ss[i]. english = Convert.ToInt32(Console.ReadLine());
                Console.Write("请输入语文:");
                   ss[i].chinese = Convert.ToInt32(Console.ReadLine());
         
         
               
            }
            for (int i = 0; i < 4; i++)
            {
                for (int j = i+1; j < 5; j++)
                {
                    Student temp;
                    if (ss[i].Average() > ss[j].Average())
                    {
                        temp = ss[i];
                        ss[i] = ss[j];
                        ss[j] = temp;

                    }
                    
                }
               
            }
            for (int i = 0; i < 5; i++)
            {
                Console.Write("学生的编号:{0}\n学生的姓名:{1}\n数学成绩:{2}\n英语成绩:{3}\n语文成绩:{4}\n平均分:{5}",
                    ss[i].Num, ss[i].Name, ss[i].Math, ss[i].English, ss[i].Chinese, ss[i].Average());

            }
        }
    }
}
老提示我未将对象引用到实例是怎么回事?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
我试验了下你的程序 他是提示错误 “Student”是“命名空间”,但此处被当做“类型”来使用        你的命名空间名字和类型名字一样了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你的学生类是怎么定义的……怎么和名称空间一样……这个呢Student temp = new Student();……

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
宋天琪 + 1
戴水平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 孙宁宇 于 2012-7-8 12:51 编辑

因为你没有把student数组中的每一个元素初始化
Student[] ss = new Student[5];
只是在内存中开辟了空间 但里面的每个元素都是NULL
所以你在赋值以前还要对每个元素 初始化
for (int i = 0; i < ss.Length; i++)
            {
               ss=new student();
                            Console.Write("请输入学号:");
                ss. num = Convert.ToString(Console.ReadLine());
                Console.Write("请输入姓名:");
                 ss. name = Convert.ToString(Console.ReadLine());
                Console.Write("请输入数学:");
                ss. math = Convert.ToInt32(Console.ReadLine());
                Console.Write("请输入英语:");
              ss. english = Convert.ToInt32(Console.ReadLine());
                Console.Write("请输入语文:");
                   ss.chinese = Convert.ToInt32(Console.ReadLine());
         
         
               
            }

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
宋天琪 + 1
戴水平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
应该是 ss[i]=new student();
回复 使用道具 举报
你的Student是一个类,但是你没有写 ,然后把你的属性要设置到这个里面!
如:  private int _Chinese;
        public int Chinese
        {
            get { return _Chinese; }
            set { _Chinese = value; }
        }

都是这样的  就可以使用了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
以前遇到过好多这种情况,我没有看你具体的代码,但是一看那个异常提示就明白,是因为只声明了对象,没有实例化对象造成的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马