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
当这个循环结束时
for(num = 0; num <= 100; num++){
num
是101
,而不是100
。因为发生的事情是测试条件直到它是假的,而这发生在num>100
.
你弄错了。当您不使用变量作为循环检查时(以及当您通常使用幻数反模式时),并在以后重用它们时,就会发生这种情况。这样你就可以确定你将实际使用什么价值。
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...
当它脱离循环时,变量 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);
}
}
检查一下。