我做了一个循环,产生数字1,2,3,...的总和和平均值到一个上限100.我遇到的问题是修改我当前的代码所以它只包含多个数字这是我的拥有:
public class SumAndAverageForLoop {
public void SumAndAverageForLoop() {
double sum = 0;
for (double i = 1; i <=100; i++) sum+= i;
System.out.println ("the average is " + sum/100);
System.out.println ("the sum is " + sum);
}
}
我试图在没有主方法的情况下这样做,所以我必须创建一个Launcher类。
感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
为了确定一个数字是否可以被7整除,你应该使用模数偏差运算符%并将余数与0进行比较;
int sum = 0;
int count = 0;
for (int i = 0; i <= 100; i++) {
if (i % 7 == 0) {
sum += i;
count++;
}
}
System.out.println("the average is " + sum/count);
System.out.println("the sum is " + sum);
另外,当你需要的只是一个int时,我不建议使用double。您可能会被未来的精确问题所困扰。如果你想要一个小数平均值,你可以将你的总和转换成双倍,然后除以计数。像这样:
System.out.println("the average is " + ((double) sum)/count);
答案 1 :(得分:1)
在Java 8中,现在可以轻松完成,而无需编写易出错的循环结构,如下所示:
IntStream.range(0,100).filter(i -> i % 7 == 0).summaryStatistics();
结果:
IntSummaryStatistics{count=15, sum=735, min=0, average=49.000000, max=98}
答案 2 :(得分:0)
对于每次迭代,你的for循环应该以7为增量,并且你应该保持迭代次数,因为你需要它来寻找平均值。
int sum = 0;
int count = 0;
int average = 0;
for(int i=7; i<=100; i=i+7)
{
sum = sum + i;
count= count+1;
average = sum/count;
}
答案 3 :(得分:-1)
我会在这个用例中使用Modulus运算符。
public class SumAndAverageForLoop {
public void SumAndAverageForLoop() {
double sum = 0;
for (double i = 1; i <=100; i++){
if((i % 7) == 0){
sum+= i;
}
System.out.println ("the average is " + sum/100);
System.out.println ("the sum is " + sum);
}
}