问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace面向对象聊天机器人1{classProgram{staticvoidMain(string[]args){机器人r1=new机器人();r1.Name="小米";r1.Eat(5);机器人r2=new机器人();r2.Name="小艾";r2.Eat(10);Console.WriteLine("请选择你要与之聊天的机器人:1→小米,2→小艾");机器人r;//对机器人做选择stringstr=Console.ReadLine();if(str=="1"){r=r1;//r指向r1指向的对象;}elseif(str=="2"){r=r2;}else{Console.WriteLine("输入错误,请重新选择!");}r.SayHello();//此处报错,说使用了未赋值的局部变量r,求修正,急求!!!谢谢!while(true){stringstr1=Console.ReadLine();r.Speak(str1);}Console.ReadKey();}class机器人{publicstringName{set;get;}privateintFullLevel{set;get;}publicvoidSayHello(){Console.WriteLine("我叫{0}",Name);}publicvoidEat(intFoodCount){if(FullLevel>100){return;}FullLevel=FullLevel+FoodCount;}publicvoidSpeak(stringstr){if(FullLevel<=0){Console.WriteLine("不说了,饿死了!");return;}if(str.Contains("名字")||str.Contains("姓名")){this.SayHello();//类的方法调用类中另外的方法;}elseif(str.Contains("女朋友")){Console.WriteLine("年龄太小,不予考虑!");}else{Console.WriteLine("你在说神马?");}FullLevel--;}}}}
解决方案
解决方案二:
帮你改了,classProgram{staticvoidMain(string[]args){机器人r1=new机器人();r1.Name="小米";r1.Eat(5);机器人r2=new机器人();r2.Name="小艾";r2.Eat(10);Console.WriteLine("请选择你要与之聊天的机器人:1→小米,2→小艾");机器人r=new机器人();//那个错误的主要原因是你没有new一个对象,我觉得好奇怪,上面那些r1你就会new一个对象,为什么到了这里就不会了??//对机器人做选择stringstr=Console.ReadLine();if(str=="1"){r=r1;//r指向r1指向的对象;}elseif(str=="2"){r=r2;}else{Console.WriteLine("输入错误,请重新选择!");}r.SayHello();//此处报错,说使用了未赋值的局部变量r,求修正,急求!!!谢谢!while(true){stringstr1=Console.ReadLine();r.Speak(str1);}//Console.ReadKey();}class机器人{publicstringName{set;get;}privateintFullLevel{set;get;}publicvoidSayHello(){Console.WriteLine("我叫{0}",Name);}publicvoidEat(intFoodCount){if(FullLevel>100){return;}FullLevel=FullLevel+FoodCount;}publicvoidSpeak(stringstr){if(FullLevel<=0){Console.WriteLine("不说了,饿死了!");return;}if(str.Contains("名字")||str.Contains("姓名")){this.SayHello();//类的方法调用类中另外的方法;}elseif(str.Contains("女朋友")){Console.WriteLine("年龄太小,不予考虑!");}else{Console.WriteLine("你在说神马?");}FullLevel--;}}}
解决方案三:
你输入非1、2的数字,不就造成r为null了嘛。
解决方案四:
在使用之前给你的R赋个初始值就行,就像楼上说的,如果你的人既不是1也不是2就会出现null的情况