问题描述
{机器人p1=new机器人();p1.Nane="小I";p1.Eat(5);机器人p2=new机器人();p2.Nane="小J";p2.Eat(3);Console.WriteLine("请选择机器人:1或2,1是小I,2是小J");stringst3=Console.ReadLine();if(st3=="1"){p1=p2;}else{p2=p1;}p1.SayHello();while(true){stringst1=Console.ReadLine();p1.Speak(st1);}}}class机器人{publicstringNane{get;set;}privateintFullLevel{get;set;}publicvoidSayHello(){Console.WriteLine("我叫{0}",Nane);}publicvoidEat(intfoodConunt){if(FullLevel>100){return;}FullLevel=FullLevel+foodConunt;}publicvoidSpeak(stringst){if(FullLevel<=0){Console.WriteLine("额死了不聊了");stringsrt1=Console.ReadLine();intfood=Convert.ToInt32(srt1);if(food<=0){Console.WriteLine("兄弟你玩我的吧");return;}}if(st=="你好~~~"){Console.WriteLine("我今天心情不是很好别来烦我");}elseif(st=="88"){Console.WriteLine("再见");return;}else{Console.WriteLine("你说什么,我听不懂");}FullLevel--;}还有这段代码if(food<=0){Console.WriteLine("兄弟你玩我的吧");return;}也结束不了要怎么才能实现???
解决方案
解决方案二:
你Speak函数虽然return了,但是你while循环没结束,当然退步了程序了把你Speak函数改造一下就可以了staticclassProgram{///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){机器人p1=new机器人();p1.Nane="小I";p1.Eat(5);机器人p2=new机器人();p2.Nane="小J";p2.Eat(3);Console.WriteLine("请选择机器人:1或2,1是小I,2是小J");stringst3=Console.ReadLine();if(st3=="1"){p1=p2;}else{p2=p1;}p1.SayHello();while(true){stringst1=Console.ReadLine();if(p1.Speak(st1)==true)//Speak函数返回true了,结束程序break;}}}class机器人{publicstringNane{get;set;}privateintFullLevel{get;set;}publicvoidSayHello(){Console.WriteLine("我叫{0}",Nane);}publicvoidEat(intfoodConunt){if(FullLevel>100){return;}FullLevel=FullLevel+foodConunt;}publicboolSpeak(stringst){if(FullLevel<=0){Console.WriteLine("额死了不聊了");stringsrt1=Console.ReadLine();intfood=Convert.ToInt32(srt1);if(food<=0){Console.WriteLine("兄弟你玩我的吧");returntrue;}}if(st=="你好~~~"){Console.WriteLine("我今天心情不是很好别来烦我");}elseif(st=="88"){Console.WriteLine("再见");returntrue;//通知while,结束}else{Console.WriteLine("你说什么,我听不懂");}FullLevel--;returnfalse;}}
解决方案三:
机器人p1=new机器人();p1.Nane="小I";p1.Eat(5);机器人p2=new机器人();p2.Nane="小J";p2.Eat(3);Console.WriteLine("请选择机器人:1或2,1是小I,2是小J");stringst3=Console.ReadLine();if(st3=="1"){p1=p2;}else{p2=p1;}p1.SayHello();while(true){stringst1=Console.ReadLine();if(p1.Speak(st1)==true)//Speak函数返回true了,结束程序break;}}}class机器人{publicstringNane{get;set;}privateintFullLevel{get;set;}publicvoidSayHello(){Console.WriteLine("我叫{0}",Nane);}publicvoidEat(intfoodConunt){if(FullLevel>100){return;}FullLevel=FullLevel+foodConunt;}publicvoidSpeak(stringst){if(FullLevel<=0){Console.WriteLine("额死了不聊了");stringsrt1=Console.ReadLine();intfood=Convert.ToInt32(srt1);if(food<=0){Console.WriteLine("兄弟你玩我的吧");returntrue;}}if(st=="你好~~~"){Console.WriteLine("我今天心情不是很好别来烦我");}elseif(st=="88"){Console.WriteLine("再见");returntrue;}else{Console.WriteLine("你说什么,我听不懂");}FullLevel--;returnfalse;为什么我修改后提示错误1运算符“==”无法应用于“void”和“bool”类型的操作数错误2由于“机器人2.机器人.Speak(string)”返回void,返回关键字后面不得有对象表达式
解决方案四:
把publicvoidSayHello()改成publicboolSayHello()把return;改成returntrue;
解决方案五:
晕了晕了上面看错了是把publicvoidSpeak(stringst)改成publicboolSpeak(stringst)
解决方案六:
请问为什么要改成bool呢麻烦你解释一下
解决方案七:
bool类型的函数才能返回true或false,从而告诉调用的while循环是不是该退出