public class ScoreAverageDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int score=0;
int sum=0;
int count=-1;
while(score!=-1){
count++;
sum+=score;
System.out.println("请输入分数: ");
score=scanner.nextInt()
}
System.out.println("平均分数是: "+(double)sum/count);
}
}执行这个程序,输入分数,输入两次均输入12,得到的平均值是24/2,值是12...
我的问题是,为什么count要设置为-1,当我输入的分数是-1的时候,score=-1的时候它就已经跳出循环了。 所以不会执行count++,
所以,我觉得应该设置int count=0;
可是如果 这么设置后,平均值就不是12了,而是24/3,值为8,..为什么我实在不明白。。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int score=0;
int sum=0;
int count=-1;
while(score!=-1){
count++;
sum+=score;
System.out.println("请输入分数: ");
score=scanner.nextInt()
}
System.out.println("平均分数是: "+(double)sum/count);
}
}执行这个程序,输入分数,输入两次均输入12,得到的平均值是24/2,值是12...
我的问题是,为什么count要设置为-1,当我输入的分数是-1的时候,score=-1的时候它就已经跳出循环了。 所以不会执行count++,
所以,我觉得应该设置int count=0;
可是如果 这么设置后,平均值就不是12了,而是24/3,值为8,..为什么我实在不明白。。
保证输入数合法的时候,计数呀
那后面改为
System.out.println("平均分数是: "+(double)sum/(count-1));
count是用来记数的,你要把数记对了才能算对
那后面把
count++;
放在下面这句后面也可以
System.out.println("平均分数是: "+(double)sum/count); 总之,你自己心里要有数。
score=scanner.nextInt()
把这两句话 调以下顺序也可以啊。
count已经加1了,值已经变成0了。所以当你输入两次12的时候,count就已经变成2了,但当你输入-1的时候,是不会执行count++;的。。
昏你count是统计输入的次数,不是统计的要算平均值数字的个数。
比如你输入了5个数,再输个-1来退出,就一共输入了6个数字,最后的那个-1是用来退出的
count++; score=scanner.nextInt() 这2行的代码换下位置,
这个换位置是没有意义的,换不换结果是一样的
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int score=0;
int sum=0;
int count=-1; while(score!=-1){
count++;
/* 进入循环后 ,未有任何输入 ,这时
* count由-1变成0得时候,score等于0,也就是说sum没变化(sum=0 count=0)。
* 而在输入12后,count由0变成1,sum才加上了输入的12(sum=12 count=1)。
* 再输入12后,count由1变成2,sum加上了输入的12(sum=24 count=2)。
* 再输入-1后,跳出循环 执行打印 (sum=24 count=2)。
*/
sum+=score;
System.out.println("请输入分数: ");
score=scanner.nextInt();
}
System.out.println("平均分数是: "+(double)sum/count);
}
程序运行
count=-1;
score=0;//肯定不为-1进入while
count++;//count=0;
界面提示你输入分数:
你输入第一个分数:12;//sum=12;score=12;//肯定不为-1
第二次进入while
count++;//count=1;
界面提示你输入分数:
你输入第二个分数:12;//sum=12;
score=12;//肯定不为-1
第三次进入while
count++;//count=2;
界面提示你输入分数:
你输入第三个分数:-1;//sum=24;
score=-1;
这时score=-1不会进入while
整个过程实际上进入了循环三次,结果就出来了噻~~
所以上面代码根本没有问题,看问题要仔细