Java-decimal在计算平均值时保持X.0
在这个脚本中,我需要填充一行数字,并在需要停止时键入-1。当它停止时,它应该计算并显示数字总数(总和)、填写的数字数量(不包括-1(数量)和平均值(平均值)。每当我输入10和20这样的数字时,很好地显示平均值是15。但是当小数必须改变时,例如,我输入10和11(因此它必须显示10.5),它只显示10.0,因此它是错误的。当平均值为双精度时,为什么小数点保持在X.0?我做错了什么Java-decimal在计算平均值时保持X.0,java,loops,int,double,decimal,Java,Loops,Int,Double,Decimal,在这个脚本中,我需要填充一行数字,并在需要停止时键入-1。当它停止时,它应该计算并显示数字总数(总和)、填写的数字数量(不包括-1(数量)和平均值(平均值)。每当我输入10和20这样的数字时,很好地显示平均值是15。但是当小数必须改变时,例如,我输入10和11(因此它必须显示10.5),它只显示10.0,因此它是错误的。当平均值为双精度时,为什么小数点保持在X.0?我做错了什么 public static void main(String[] args) { Scanner reade
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int sum = 0;
int amount = 0;
double avg = 0;
while (true) {
System.out.println("Type numbers: ");
int number = Integer.parseInt(reader.nextLine());
if (number == -1) {
break;
} else {
amount++;
sum = sum + number;
}
}
avg = avg + sum / amount;
System.out.println("Thank you and see you later!");
System.out.println("The sum is: " + sum);
System.out.println("How many numbers: " + amount);
System.out.println("Average: " + avg);
}
表达式
avg=avg+sum/amount代码>可简化为avg=总和/金额代码>
但是,sum/amount
部分将为您提供一个int
结果,因为sum
和amount
和int
都会生成/
结果
因此,必须对(至少)一个操作数执行强制转换,即:
avg = ((double) sum) / amount;
将整数和转换为浮点数,将整数金额转换为浮点数。
或
定义“十进制”。你是说(a)基数(b)小数点(c)小数位(d)数字吗?提示:只有(a)是正确的;其他的只是对标准术语的误用。NB Java不是一种脚本语言,这也不是一种脚本。很抱歉,它不清楚,不管怎样,从你的帖子中学到了一些新东西;)道歉不是必须的,但目的是修正你的帖子,让人们知道你在说什么。假设意味着一个答案,也就是说。这个表达也不正确<代码>平均值=总和/计数,
根据定义。代码之所以有效,是因为average
已初始化为零。感谢您的帮助,这正是我所需要的。我想知道这个社区有什么咸向下投票虽然哈哈,我是新来的。
avg=((double)sum)/amount;