public class SumAndAverage {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int num;
for(num = 0; num <= 100; num++){
sum += num;
}
double average = ((double)sum) / num;
System.out.println("The sum is " + sum);
System.out.println("The average is " + average);
}
}
结果:
总和是5050 平均值为50.0
出了什么问题:
5050/100 = 50.5 不 50.0
答案 0 :(得分:6)
此循环结束时
for(num = 0; num <= 100; num++){
num
为101
,而不是100
。因为发生的情况是测试条件直到它为假,并且这发生在num>100
。
答案 1 :(得分:0)
你弄错了。当你不使用变量作为循环检查时(以及当你通常使用魔法数字反模式)时会发生这种情况 - 并在以后重用它们。这样你就可以确定你将实际使用什么价值。
public class SumAndAverage {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int num;
int max = 100;
for(num = 0; num <= max; num++){
sum += num;
}
double average = ((double)sum) / max;
System.out.println("The sum is " + sum);
System.out.println("The average is " + average);
}
}
你的数字等于101,而不是100 ......
答案 2 :(得分:0)
当循环出现时,变量num将为101。因此,您需要手动减去一个或更少,可以更好地完成相同的工作,减少一次迭代
for(num = 0; num < 100; ){
sum += ++num;
}
完整计划
public class SumAndAverage {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int num;
for(num = 0; num < 100; ){
sum += ++num;
}
double average = ((double)sum) / num;
System.out.println("The sum is " + sum);
System.out.println("The average is " + average);
}
}
检查一下。