猿问

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

要求用户输入成绩 直到输入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);
}
}

求大神 讲一下这个逻辑...

乌冬冬冬
浏览 1185回答 2
2回答

末日泣歌

第一段的if是让你跳出循环 没有if的在你输入-1是 还会循环一次 结果就不一样 原因就出在这里举个简单的例子 我们在键盘输入4次: 第一次  1第二次  2第三次  3第四次  -1然后得到的结果就是第一段是2.0 没有错      第二段是1.25 错了给你分析一下原因 第一段依次输出的顺序:mark    sum    count1.0        1.0        12.0        3.0        23.0        6.0        3Ave = sum / count2.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        4Ave - sum / count1.25 = 5.0 / 4原因就出在这 没有if判断 无法阻止跳出循环前最后一遍的循环输出 导致结果错误顺便说下 这种问题debug一下就出来了 希望对你有所帮助
随时随地看视频慕课网APP

相关分类

Java
我要回答