要求用户输入成绩 直到输入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一下就出来了 希望对你有所帮助
添加回答
举报
0/150
提交
取消