syn*_*oll 4 java for-loop average count
编辑:我写了平均值的代码,但我不知道如何使它,所以它也使用我的args.length而不是数组的int
我需要编写一个可以计算的java程序:1.读入的整数数量2.平均值 - 不必是整数!
注意!我不想计算数组的平均值,而是计算args中的整数.
目前我写的这个:
int count = 0;
for (int i = 0; i<args.length -1; ++i)
count++;
System.out.println(count);
}
int nums[] = new int[] { 23, 1, 5, 78, 22, 4};
double result = 0; //average will have decimal point
{
for(int i=0; i < nums.length; i++){
result += nums[i];
}
System.out.println(result/count)
}
Run Code Online (Sandbox Code Playgroud)
谁能引导我朝着正确的方向前进?或者举一个例子来指导我以写入方式来塑造这段代码?
提前致谢
只需对您的代码进行一些小的修改(为了清晰起见,使用一些var重命名):
double sum = 0; //average will have decimal point
for(int i=0; i < args.length; i++){
//parse string to double, note that this might fail if you encounter a non-numeric string
//Note that we could also do Integer.valueOf( args[i] ) but this is more flexible
sum += Double.valueOf( args[i] );
}
double average = sum/args.length;
System.out.println(average );
Run Code Online (Sandbox Code Playgroud)
请注意,循环也可以简化:
for(String arg : args){
sum += Double.valueOf( arg );
}
Run Code Online (Sandbox Code Playgroud)
编辑:OP似乎想要使用该args数组.这似乎是一个String数组,因此相应地更新了答案.
更新:
正如zoxqoj正确指出的那样,上面的代码中没有处理整数/双溢出.虽然我假设输入值足够小,不会出现这个问题,但这里有一个片段用于非常大的输入值:
BigDecimal sum = BigDecimal.ZERO;
for(String arg : args){
sum = sum.add( new BigDecimal( arg ) );
}
Run Code Online (Sandbox Code Playgroud)
这种方法有几个优点(尽管速度稍慢,所以不要将它用于时间关键操作):
BigDecimal可能大于适合a double或者的long.