一个求平均值的程序,请问出错在哪里

import acm.program.*;
public class AverageList extends ConsoleProgram{
public static final int sentinel=-1;
public void run(){
println("the program averagelist");
println("enter value "+sentinel+" to stop the program");
double ave=0;
int sum=0;
int n=0;
while(true){
int vaule=readInt();
int i=n++;
sum+=vaule;
ave=sum/i;
if(vaule==sentinel)break;
}
println("the averaage is"+ave);
}
}

6个回答

你之前的程序里实在循环里边写的int i = n++;所以每次循环的时候i都是从新定义的,并且你n++还是先复制给i的所以每次循环都是除的0,所以会报错

我把程序改成如下后,即可成功运行
import acm.program.*;
public class AverageList extends ConsoleProgram{
public static final int sentinel=-1;
public void run(){
println("the program averagelist");
println("enter value "+sentinel+" to stop the program");
double ave=0;
int sum=0;
int n=0;
while(true){
int vaule=readInt();
if(vaule==sentinel)break;
n++;
sum+=vaule;
ave=sum/n;
}
println("the averaage is "+ave);
}
}

但是为什么加上 i 之后程序会出错?

 ave=sum/i;//这里会先取整再转double
 这句改一下
 ave=sum*1.0/i;

sum是整型,i也是整型,相除的话会把小数部分去掉,同上

是不是i=n++;是先把n赋值给i,n再+1;所以除以i实际并不是除以n。

i=n++; 先引用再自加,所以i=0,n=n+1,所以会出现参数错误异常

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

4
求高人SQLServer SQL, 如何获取所有下属包括隔级下属人数和分数总和及平均值
2
C++求平均数和最小值,这个最小值返回了0是什么问题?
3
求平均值 谢谢大家了 这怎么回事啊
2
新手求教,在shell中将文件中某列相同的行们中的另一列数字取平均值
3
新手求教啊,在shell中将文件中某列相同的行们中的另一列数字取平均值,求附上程序
1
求教:CT课程的成绩是采用记录数组的形式存放的,请设计这样一个数组,并写出求班级平均成绩的命令式程序
1
关于spark RDD求平均的问题
1
OpenCV里面求轮廓的二阶矩,灰度平均值,灰度方差值,灰度熵,纹理熵,相关度,Hu不变矩?
8
初学者死都看不出程序的错误,求大神看看
1
用jqplot做了一个三十天的曲线图,怎么显示平均线
2
C#语言,输入10个数字,去掉一个最大值,一个最小值,求剩下的平均数
8
非常简单C++问题:输入任意个实数(10~100个),计算平均值,升序输出所有数(包括平均值在内)
4
C语言,请问怎么调用这个求平均值的函数?
4
获取一个时刻开始60分钟的,每分钟数据的平均值sql怎么写,mysql的
2
输入10个整数,按每行3个整数输出这些数,最后输出10个整数的平均值?写出调试过程
1
根据平均值对文件重新排序?排序的结果怎么保存?
3
请教mysql统计每天平均值进行运算问题
3
输入10个整数,按每行3个数输出这些数,最后输出10个整数的平均值
2
C语言 如何求10个乱数的平均值
4
求平均工资最高的部门信息;怎么查询呢?