Java 平均值不正确:始终为小数点。0
我对数组非常陌生,我正在尝试创建一个简单的程序来计算5个数字的平均值。然而,当计算平均值时,它总是有一个小数点0,而不是它应该是什么,但我不知道为什么。。 例如,如果我键入4、4、4、4、3,它将显示3.0作为平均值,而不是3.8。请帮忙Java 平均值不正确:始终为小数点。0,java,arrays,int,double,average,Java,Arrays,Int,Double,Average,我对数组非常陌生,我正在尝试创建一个简单的程序来计算5个数字的平均值。然而,当计算平均值时,它总是有一个小数点0,而不是它应该是什么,但我不知道为什么。。 例如,如果我键入4、4、4、4、3,它将显示3.0作为平均值,而不是3.8。请帮忙 int[] boxes = new int[5]; for (int i = 1 ; i <= 5 ; i++) { System.out.print("Enter number
int[] boxes = new int[5];
for (int i = 1 ; i <= 5 ; i++)
{
System.out.print("Enter number " + i + " > ");
int n = Integer.parseInt(kb.nextLine());
boxes[i-1] = n;
}
double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
System.out.println("The average of those five numbers is: " + mean);
int[]框=新的int[5];
对于(int i=1;i这是因为该操作是用整数完成的,请将5更改为5.0我无法回答具体问题,但java中有一个巨大的主题,称为类型转换。我想,你读过了。这对你自己来说是一个很好的难题。让我想起了我的过去:)快速修复:更改5->5.0D
为什么??让我们更详细地看一下划分过程:
您从所有数字中获得总和:(框[0]+框[1]+框[2]+框[3]+框[4])
,结果->int
您将sum(int-type)/5(int-type)
=结果也int-type
3.8->3
最后一个是它的自动播放int->double
这就是为什么你会看到你所看到的。解决方案1:
-可以使用5.0而不是5来进行双除法。如下所示:
double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
int[] boxes = new int[5];
int sum=0;
for (int i = 1 ; i <= 5 ; i++)
{
System.out.print("Enter number " + i + " > ");
int n=kb.nextInt();
boxes[i-1] = n;
sum +=boxes[i-1];
}
double mean = sum / 5.0;
System.out.println("The average of those five numbers is: " + mean);
解决方案2:
-你可以像这样对你的总数进行双重转换:
double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
int[] boxes = new int[5];
int sum=0;
for (int i = 1 ; i <= 5 ; i++)
{
System.out.print("Enter number " + i + " > ");
int n=kb.nextInt();
boxes[i-1] = n;
sum +=boxes[i-1];
}
double mean = sum / 5.0;
System.out.println("The average of those five numbers is: " + mean);
改进您的答案:
- 您可以使用
int n=kb.nextInt()
而不是int n=Integer.parseInt(kb.nextLine())代码>
- 您可以在
循环中为计算总和,如下所示:
double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
int[] boxes = new int[5];
int sum=0;
for (int i = 1 ; i <= 5 ; i++)
{
System.out.print("Enter number " + i + " > ");
int n=kb.nextInt();
boxes[i-1] = n;
sum +=boxes[i-1];
}
double mean = sum / 5.0;
System.out.println("The average of those five numbers is: " + mean);
int[]框=新的int[5];
整数和=0;
因为(inti=1;我呵呵,你比我领先了几秒钟:-)谢谢!这很有道理,我来研究一下:)为什么要使用int n=Integer.parseInt(kb.nextLine())代码>而不是int n=kb.nextInt()代码>非常简单