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,..为什么我实在不明白。。

解决方案 »

  1.   

    count++; 
    保证输入数合法的时候,计数呀
      

  2.   

    因为第一次count++的时候还没有输入数据,所以初始值应该是-1
      

  3.   

    还是不太明白。初始设为0,为什么会多除一次,难道输入的-1也会执行count++;吗。。
      

  4.   

    当你输入-1的时候,count已经执行了一次++了,你看看代码顺序就知道了!
      

  5.   

    你如果要设置int count=0; 
    那后面改为
    System.out.println("平均分数是: "+(double)sum/(count-1)); 
    count是用来记数的,你要把数记对了才能算对
      

  6.   

    或者你如果要设置int count=0;  
    那后面把
    count++;  
    放在下面这句后面也可以
    System.out.println("平均分数是: "+(double)sum/count);  总之,你自己心里要有数。
      

  7.   

    count++; 
    score=scanner.nextInt() 
    把这两句话 调以下顺序也可以啊。
      

  8.   

    大家可能忽略了一点,int score=0;在程序的顶部已经把它设初始值是0了,所以当你执行程序的时候,本身循环体已经执行一次了,
    count已经加1了,值已经变成0了。所以当你输入两次12的时候,count就已经变成2了,但当你输入-1的时候,是不会执行count++;的。。
      

  9.   

    输入-1的时候,count已经执行了一次++了
      

  10.   


    昏你count是统计输入的次数,不是统计的要算平均值数字的个数。
    比如你输入了5个数,再输个-1来退出,就一共输入了6个数字,最后的那个-1是用来退出的
      

  11.   

    count初始值是应该是0,但是算平均值的时候要把 输-1退出的 那一次 减掉
      

  12.   

    还有前面说的
    count++; score=scanner.nextInt() 这2行的代码换下位置,
    这个换位置是没有意义的,换不换结果是一样的
      

  13.   


    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); 
    }
      

  14.   

    你的程序是这样的:
    程序运行
    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
    整个过程实际上进入了循环三次,结果就出来了噻~~
    所以上面代码根本没有问题,看问题要仔细