为了账号安全,请及时绑定邮箱和手机立即绑定

入门JAVA:请问这两段代码表示的意思有何区别?为什么结果不一样?

入门JAVA:请问这两段代码表示的意思有何区别?为什么结果不一样?

乌冬冬冬 2017-10-29 04:19:57
要求用户输入成绩 直到输入mark=-1时,算出输入的成绩的平均值(mark不包含-1)这是第一段,输出结果是正确的import java.util.Scanner;public class mark{public static void main(String[] args){Scanner kb=new Scanner(System.in);double mark=0,sum=0;int count=0;while(mark!=-1){System.out.print("Enter your mark: ");mark=kb.nextDouble();if(mark!=-1){sum=sum+mark;count++;}}System.out.print("Ave= "+sum/count);}}这是第二段 不加if为何结果里面会算上-1 我不是很明白import java.util.Scanner;public class mark{public static void main(String[] args){Scanner kb=new Scanner(System.in);double mark=0,sum=0;int count=0;while(mark!=-1){System.out.print("Enter your mark: ");mark=kb.nextDouble();sum=sum+mark;count++;}System.out.print("Ave= "+sum/count);}}求大神 讲一下这个逻辑...
查看完整描述

2 回答

已采纳
?
末日泣歌

TA贡献35条经验 获得超18个赞

第一段的if是让你跳出循环 没有if的在你输入-1是 还会循环一次 结果就不一样 原因就出在这里

举个简单的例子 我们在键盘输入4次: 

第一次  1

第二次  2

第三次  3

第四次  -1

然后得到的结果就是第一段是2.0 没有错      第二段是1.25 错了

给你分析一下原因 第一段依次输出的顺序:

mark    sum    count

1.0        1.0        1

2.0        3.0        2

3.0        6.0        3

Ave = sum / count

2.0 = 6.0 / 3

所以第一段没问题

第二段依次输出的顺序:

mark    sum    count

 1.0        1.0        1

 2.0        3.0        2

 3.0        6.0        3

-1.0        5.0        4

Ave - sum / count

1.25 = 5.0 / 4

原因就出在这 没有if判断 无法阻止跳出循环前最后一遍的循环输出 导致结果错误

顺便说下 这种问题debug一下就出来了 希望对你有所帮助

查看完整回答
1 反对 回复 2017-10-30
  • 2 回答
  • 0 关注
  • 1184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信