定义一个BigDecimal 型的sum,来计算放进去的数字的和
定义一个int 型的index,定义放进去的数字的个数
平均数的话,就是sum / index了
如果清零,那么sum 置0, index 置 0
用BigDecimal 不用double,防止浮点数之间的非精确计算造成计算误差
定义一个int 型的index,定义放进去的数字的个数
平均数的话,就是sum / index了
如果清零,那么sum 置0, index 置 0
用BigDecimal 不用double,防止浮点数之间的非精确计算造成计算误差
自己动手练练吧,有问题了可以拿出来问
在while中完成求和,求平均数,统计输入个数等工作
可以定义一个reset输入,如果输入等于reset,将while里面的和,输入个数清零
就提示这么多吧,剩下的,自己查api吧
java.util.Scanner
java.math.BigDecimal
while 循环
* 1. 可以不断地向其中加入浮点数字(例如:3.2, 5.5, 8.17 等)
浮点数的要求:绝对值在0 到 1000 之间
2. 可以返回当前已经加入了多少项
3. 可以返回当前数值的累加和
4. 可以返回当前数值的平均值
5. 可以清空“累加统计器”,一切都从头开始,就像这个对象刚刚创建一样
* @author Administrator
*/
public class Accumulator { private int count;//当前加了多少项
private float sum;//当前数值的累加和
boolean validateNum(float number){
if(Math.abs(number)<=1000&&Math.abs(number)>=0){
return true;
}
return false;
}
/**
* 清空累加器
*/
public void clearAccumulator(){
}
public void add(float number) throws Exception{
if(validateNum(number)){
count++;
sum=sum+number;
}
else{
throw new Exception("增加的浮点数不符合规范,绝对值应该小于等于1000");
}
}
/**
* 获得平均值
* @return
*/
public float getAverage(){
if(count!=0){
return sum/count;
}
else{
return 0f;
}
} /**
* 获得数量
* @return
*/
public int getCount() {
return count;
} /**
* 获得总和
* @return
*/
public float getSum() {
return sum;
}
public static void main(String args[]) throws Exception{
Accumulator acc = new Accumulator();
acc.add(3.5f);
acc.add(4.5f);
acc.add(8.17f);
acc.add(5.5f);
System.out.println("当前总共加了"+acc.getCount()+"个");
System.out.println("当前总和为"+acc.getSum());
System.out.println("当前平均值为"+acc.getAverage());
}
}
绝对值应该是大于等于0吧?