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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冉贵阳 黑马帝   /  2012-4-4 21:29  /  1908 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

调试结果不对劲,求帮助!
namespace 类属性
{
    class student
    {
        string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        char sex;


        public char Sex
        {
            get { return sex; }
            set
            {
                if (value == '男' || value == '女')
                {
                    sex = value;
                }
                else
                {
                    sex ='男';
                }
            }
        }int age;


        public int Age
        {
            get { return age; }
            set { age = value >= 0 ? value : 0; }
        }int chinese;


        public int Chinese
        {
            get { return chinese; }
            set { chinese = value >= 0 ? value : 0; }
        }int math;


        public int Math
        {
            get { return math; }
            set { math = value >= 0 ? value : 0; }
        }int english;


        public int English
        {
            get { return english; }
            set { english = value >= 0 ? value : 0; }
        }
        public void sayhello()
        {
            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生", name ,age ,sex);
        }
        public void showscore()
        {
            int sum = chinese + math + english;
            int avg = sum / 3;
            Console.WriteLine("我叫{0},我的总成绩是{1}分,平均成绩为{2}", name, sum, avg);
        }
    }
}

第二个代码如下:
class Program
    {
        static void Main(string[] args)
        {
           student zsStudent = new  student();
            zsStudent.Name="张三";
                zsStudent.Sex='男';
                    zsStudent.Age =18;
                    zsStudent.Chinese=90;
            zsStudent.Math=95;
            zsStudent.English=80;

           student xlstudent=new student();
            xlstudent.Name="小兰";
            xlstudent.Sex='女';
            xlstudent.Age =16;
            xlstudent .Chinese=95;
            xlstudent .Math =85;
            xlstudent .English=100;

            Console.WriteLine("这是张三打招呼!");
            zsStudent .sayhello();
            zsStudent .showscore();

            Console.WriteLine("这是小兰打招呼!");
            xlstudent .sayhello();
            xlstudent .showscore ();
            Console.ReadKey();
        }
    }
调试结果显示调用方法的时候没有用到name,age,sex等属性的赋值,就是在输出的时候挖的坑没有被填进去。求解答!

评分

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

查看全部评分

6 个回复

倒序浏览
很简单 您的{} 用的中文下输入 应该 换成 英文状态下输入的 就ok了

评分

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

查看全部评分

回复 使用道具 举报
namespace 类属性
{
    class student
    {
        private string name;
        private char sex;
        private int age;
        private int chinese;
        private int math;
        private int english;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }


        public char Sex
        {
            get { return sex; }
            set
            {
                if (value == '男' || value == '女')
                {
                    sex = value;
                }
                else
                {
                    sex = '男';
                }
            }
        }

        public int Age
        {
            get { return age; }
            set { age = value >= 0 ? value : 0; }
        }


        public int Chinese
        {
            get { return chinese; }
            set { chinese = value >= 0 ? value : 0; }
        }

        public int Math
        {
            get { return math; }
            set { math = value >= 0 ? value : 0; }
        }


        public int English
        {
            get { return english; }
            set { english = value >= 0 ? value : 0; }
        }

        public void sayhello()
        {
           // Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生", name, age, sex);
            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生", name, age, sex);
        }

        public void showscore()
        {
            int sum = chinese + math + english;
            int avg = sum / 3;
           // Console.WriteLine("我叫{0},我的总成绩是{1}分,平均成绩为{2}", name, sum, avg);
            Console.WriteLine("我叫{0},我的总成绩是{1}分,平均成绩为{2}", name, sum, avg);
        }
    }
}

第二个代码如下:
class Program
     {
         static void Main(string[] args)
         {
            student zsStudent = new  student();
             zsStudent.Name="张三";
                 zsStudent.Sex='男';
                     zsStudent.Age =18;
                     zsStudent.Chinese=90;
             zsStudent.Math=95;
             zsStudent.English=80;

           student xlstudent=new student();
             xlstudent.Name="小兰";
             xlstudent.Sex='女';
             xlstudent.Age =16;
             xlstudent .Chinese=95;
             xlstudent .Math =85;
             xlstudent .English=100;

            Console.WriteLine("这是张三打招呼!");
             zsStudent .sayhello();
             zsStudent .showscore();

            Console.WriteLine("这是小兰打招呼!");
             xlstudent .sayhello();
             xlstudent .showscore ();
             Console.ReadKey();
         }
     }


我刚看了你程序,有几个问题:
1.你声明字段的时候没有访问限制,这样就失去了字段功效,变成类内部一个变量而已,更不能做限制。加上private后,不能从类外直接赋值与取值。这样能给属性在中间做一些处理,和你程序一样。
2.你说的问题,写的“我叫{0},我的总成绩是{1}分,平均成绩为{2}”,没有填入对应的值,是因为你的“{0}”大括号是在中文状态输入的,C#无法识别为标识符。你自己做下对比

评分

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

查看全部评分

回复 使用道具 举报
(⊙o⊙)…
为什么你的程序我copy过去,却没有错误呢
而且我特意试了在中文状态下输入那个大括号也没有报错啊,怎么回事啊

评分

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

查看全部评分

回复 使用道具 举报
李志祥 发表于 2012-4-4 23:01
(⊙o⊙)…
为什么你的程序我copy过去,却没有错误呢
而且我特意试了在中文状态下输入那个大括号也没有报错 ...

我运行的时候也没报错,就是那个坑没填上,给我原样输出了。改为英文状态就好了!
回复 使用道具 举报
郑帅 发表于 2012-4-4 22:02
namespace 类属性
{
    class student

对于你的第一个问题,不是说在没有访问修饰符的时候都默认为private么?在默认的private修饰下都可以在本类中访问的吧?
对于第二个问题我后面解决了。谢谢!
回复 使用道具 举报
冉贵阳 发表于 2012-4-5 13:08
对于你的第一个问题,不是说在没有访问修饰符的时候都默认为private么?在默认的private修饰下都可以在本 ...

默认不是private哦。默认是public
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马