为什么我按88会提示再见当结束不了程序

问题描述

{机器人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循环是不是该退出

时间: 2024-08-01 22:43:49

为什么我按88会提示再见当结束不了程序的相关文章

win7电脑老是出现提示联机检查并关闭该程序怎么办?

  其实,诸如提示联机检查并关闭该程序的这类型的小窗口是比较多的,虽然这是win7系统一种安全性的考虑,一种人性化的设计,但是不得不说,对于很多用户来说,这种功能似乎是有些画蛇添足了,特别是在大家正在忙着打游戏或者是看视频文件的时候,突然跳出来这样的窗口,不仅打扰到大家,有时候甚至让电脑突然卡在这个页面上,真是不胜其烦,那么到底是否有办法可以取消呢?下面,小编就来具体的讲解一下吧! 1.首先,咱们同时按下键盘上的win+r键,然后就可以看到界面中出现运行窗口了,之后咱们在运行窗口中输入reged

安卓-关于提示eclipse上,“XX出错,程序已停止运行”的原因!

问题描述 关于提示eclipse上,"XX出错,程序已停止运行"的原因! 今天写了个小程序,在写按钮监听了时候出现了问题,反复检查代码,发现加上button.setOnClickListener(new Buttonlistener());这句话后,一运行,程序就终止运行,注释掉后,没问题,布局可以显示,本人菜鸟,望大神解答,如对问题有困惑,可指出,一直在,随时恭候. 解决方案 感觉把你的代码或者log信息粘出来或许更好,这样看不出来你的错误在哪 解决方案二: 详细说下,先在布局里添加

c#-installsheild打包发布程序在winxp上安装提示(null)非win32程序

问题描述 installsheild打包发布程序在winxp上安装提示(null)非win32程序 c# 开发的程序打包后在win7上安装正常,winxp上无法使用,使用net4.0 解决方案 很难说,你的xp是不是ghost山寨盗版的,一些盗版xp精简了windows installer,或者感染了360等流氓软件,所以有各种奇怪的问题. 解决方案二: windowXP 的net没得那么高不支持啊 解决方案三: windowXP 的net没得那么高不支持啊

请教:为什么会提示有未结束的字符串常量和GRulerControl未定义呢

问题描述 为什么会提示有未结束的字符串常量和GRulerControl未定义呢<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:v="urn:schemas-microsof

VS2012,输入强签名密码后,提示指定了无效的提供程序类型

问题描述 项目采用了密码签名,由于电脑重装了系统,编译程序时,提示如下错误:于是在VS2012开发人员工具中执行输入强签名的操作,但正确输入密码后,提示如下错误:安装了VS2012SP4后,还是无法解决此问题.求解决办法,谢谢! 解决方案 本帖最后由 miaoxiao423 于 2014-09-24 20:44:30 编辑解决方案二:从下面的图能看出来:未知....无效.....很明显是你导入证书没成功哇,跟VS没什么关系了,解决证书问题先解决方案三:我猜啊是你用的.netFramwork版本不

删除文件提示文件正在被另一个人或程序使用的解决方法_应用技巧

  如果找不到哪个程序在使用这个文件,可以试试 procexp.exe. 打开procexp.exe,按下面提示打开Find Handle 输入那个正在使用的文件名,查找.就可以看到哪个程序正在使用这个文件 结束那个正在使用进程,原来不能删除的文件就可以删除了.注意,结束正在使用的系统进程可能会使系统重新启动或丢失正在打开的文档资料. 下图是查到dll的操作 查找结果 同样的方法,可以查看哪些进程正在使用某个dll.然后结束进程后再删除某个dll 上面方法可以删除大部分正在使用的文件,但达不到1

asp 程序提示中午好,上午好程序

function jdsj()  n = cstr(right(year(date()),2)) + "-"  y = cstr(month(date())) + "-"  if len(y) = 2 then y = "0" + y  r = cstr(day(date()))  if len(r) = 1 then r = "0" + r  h = cstr(hour(now())) + "-"  if

win7 64位旗舰版系统中老是提示联机检查并关闭该程序的解决方法

  1.首先在键盘上按"Win+R"组合键打开运行输入"regedit",回车打开注册表编辑器; 2.在打开"注册表编辑器"定位到"HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{20D04FE0-3AEA-1069- A2D8-08002B30309D}shellManagecommand"; 3.然后双击"默认"修改"数值数据",将数值数据中的"

迅雷提示下载失败文件被其他程序占用

  [方法1] 可能是电脑权限问题,请退出迅雷,右键迅雷快捷方式-选择以管理员身份运行迅雷再下载看下. [方法2] 也可能是杀毒软件等安全软件把文件占用了,可以到电脑右下角,看下有什么杀毒软件, 例如360.金山.QQ管家.国外的卡巴斯基.诺顿等等安全软件,有的话退出后重新启动迅雷再下载尝试. [方法3] 也可能是资源自身的问题,请登录迅雷软件中心 http://dl.xunlei.com/ 任意下载一个安装包测试看下是否正常,如果下载这里的资源正常,那这个就是您当前下载的资源问题了. [方法4