using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 聊天机器人第三版
{
    class Program
    {
        static void Main(string[] args)
        {
            Robot r1 = new Robot();
            r1.Name = "jerry";
            r1.Eat(5);
            r1.SayHello();
            while (true)
            {
                string str = Console.ReadLine();
                r1.Speak(str);
            }
            Console.ReadKey();
        }
    }    class Robot
    {
        public string Name { set; get; }   //无赋值,无读取的属性可以在主函数中赋予值        private int FullLevel { set; get; } //private属性的特点:该属性不希望被用户操作,相当于内置于类中,为什么初始值是0?        public void SayHello()
        {
            Console.WriteLine("您好,我是机器人{0}!",Name);
        }        public void Eat(int FoodCount)   //声明了一个方法,这个方法要执行的动作是喂食的动作,定义了一个参数,是喂食的量
        {
            if (FullLevel > 100)
            {
                Console.WriteLine("把我撑死了!");
                Console.ReadKey();
                return;
            }
            FullLevel = FullLevel + FoodCount;
        }        public void Speak(string str)
        {
            if (FullLevel <= 0)
            {
                Console.WriteLine("饿死了,不聊了!");
                //return;这里不能用return,否则就会一到这里就跳出这个方法(与函数同概念),
            }
            if (str.Contains("姓名") || str.Contains("名字"))
            {
                this.SayHello();   //调用同类的另一个方法;
            }
            else if (str.Contains("女朋友"))
            {
                Console.WriteLine("年纪太小,不考虑");
            }
            else
            {
                Console.WriteLine("听不懂!");
                //return;这里不能用return,否则就会一到这里就跳出这个方法(与函数同概念),而执行不到FullLevel--;语句
            }
            FullLevel--;
        }
    }
}小弟初学c#
这段代码有两个缺憾,一个是不能退出程序,一个是fulllevel被定义为private,用户就不能对机器人喂食
还有一个疑问就是为什么fulllevel会初始值为0

解决方案 »

  1.   

    退出程序: while (true)
      {
      string str = Console.ReadLine();
       if (str.equals("exit"))
            break;//加一个判断,如果输入的是exit就跳出循环。。  r1.Speak(str);
      }
    int类型如果不赋值的话默认就是0;喂食方法你要自己写,然后调用!!
      

  2.   

    .NET3.0以前不支持属性的自动初始化
    以后的版本支持  private int FullLevel { set; get; } 的写法
    int类型的初始化值为0
      

  3.   

    int类型的初始化值为0int i;int level{ set; get; }都默认为0呀