我正在练习我的Java并开发一个程序,该程序将1
到999
的所有整数相加,这些整数是3
的倍数或{{{}的倍数1}}。
这是我到目前为止所写的内容:
5
现在当我编译它时,我得到的只是1到999的每个数字的真和假。我知道这是因为我的public class MultiplesOfThreeAndFive {
public static void main(String[] args) {
//For a number to be a multiple, i % number equals 0.
MultiplesOfThreeAndFive m = new MultiplesOfThreeAndFive();
for (int i = 1; i < 1000; i++){
System.out.println(m.checkIfMult(i));
}
}
public boolean checkIfMult(int i){
return (i % 3 == 0 || i % 5 == 0);
}
}
方法的方法返回类型是checkIfMult
。< / p>
我无法总结真假,所以我只想获取那些在列表中显示为真的数字。
编辑:
按照汤姆所说的那样......我把它添加到我的主要方法中:
boolean
答案 0 :(得分:2)
我的紧凑型解决方案呢?
IntStream.range(0, 1000).filter(i -> i % 3== 0 || i % 5 == 0).sum();
根据您的想法,创建sum
变量并在for
语句中添加以下代码:
if (m.checkIfMult(i)) sum += i;
答案 1 :(得分:1)
你可以保持这样的运行总额:
1
旁注:您可以在此示例中将public class MultiplesOfThreeAndFive {
public static void main(String[] args) {
//For a number to be a multiple, i % number equals 0.
MultiplesOfThreeAndFive m = new MultiplesOfThreeAndFive();
int sum = 0;
for (int i = 1; i < 1000; i++){
if (m.checkIfMult(i))
{
sum = sum + i;
}
}
System.out.println("Sum is: " + sum);
}
public boolean checkIfMult(int i){
return (i % 3 == 0 || i % 5 == 0);
}
}
方法设为静态。如果这样做,那么您不需要创建checkIfMult
类的实例。