不知道为啥变成这样了

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

前提条件:n是系统随机生成的答案,m是用户猜测的数字。


问题1:仔细看看,你在do-while循环里把用户猜测的数字赋值给了n,先不说能不能运行,逻辑就直接错了,n作为答案在每次运行的时候是一个固定的不能改变的值,m是一个在每轮循环中用于储存用户输入的变量,所以用户输入的数值应该保存到m而非n中。

m = sc.nextInt(); // 第一处修改


问题2:还是上述问题引发的逻辑错误,因为n是固定答案,m是用户猜测,所以 if-语句中你的逻辑比反了:

// 如果 (m < n) 应该输出太小
// 如果 (m > n) 应该输出太大


好帮手慕小明 2021-12-14 10:02:55

同学您好,

上述代码没有进行对m变量初始化,这里修改为,int m = 0;即可

祝同学学习愉快~

  • 提问者 慕桂英8572233 #1

    老师,但我看老师视频当中也没初始化,为啥老师最后可以。。。

    2021-12-15 08:35:35
  • 好帮手慕阿园 回复 提问者 慕桂英8572233 #2

    同学你好,同学的代码中sc.nextInt是使用n进行的接收,如下

    https://img1.sycdn.imooc.com//climg/61b9499b098bcbe606770502.jpg

    这样m既没有被初始化,也没有被赋值,所以在对m进行操作时会报错,这里同学将接收的n改为m

    另外关于代码的问题,建议同学下次以复制粘贴的形式反馈代码

    祝学习愉快~

    2021-12-15 10:09:29
weixin_慕仙5539944 2021-12-13 21:20:34

m没有初始化值

int m=0;这样的

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师