gpt4 book ai didi

java - 为什么这个 if 语句不返回 boolean 值?

转载 作者:搜寻专家 更新时间:2023-11-01 02:35:22 26 4
gpt4 key购买 nike

我正在尝试制作一个程序来显示输入是否是一个完美的数字,这意味着因素(不包括数字)加起来与该数字相同。除了返回值,我让它工作。如果因子之和等于输入的数字,我想返回 true,但它不会这样做。

我试过在整个代码中移动 if 语句,但它在任何地方都不起作用。

public class Main {

public static void main(String[] args) {
isPerfectNumber(28);
}

public static boolean isPerfectNumber(int number) {
if (number < 1) {
return false;
}
int numberToTest = 1;
int sumOfFactors = 0;

while (numberToTest < number) {
if (number % numberToTest == 0) {
sumOfFactors += numberToTest;
}
numberToTest++;
}

if (sumOfFactors == number) {
return true;
}else{
return false;
}
}

我希望当代码看到 sumOfFactors 的 sum = 输入的数字时,那是我得到 true 语句的时候,但是当这种情况发生时,它不会返回 true。事实上,它不返回任何内容,并声明未使用方法返回。

最佳答案

它“不起作用”,因为您没有打印结果。

public static void main(String[] args) {
isPerfectNumber(28);
}

应该是

public static void main(String[] args) {
System.out.println(isPerfectNumber(28));
}

这是“真”。还有,

if (sumOfFactors == number) {
return true;
} else {
return false;
}

写起来很长

return sumOfFactors == number;

而且,如果您使用的是 Java 8+,您的 isPerfectNumber 方法可以写成带有 IntStream 和 lambda 过滤器的单行代码,例如

public static boolean isPerfectNumber(int number) {
return number >= 1 && IntStream //
.range(1, number) //
.filter(i -> number % i == 0) //
.sum() == number;
}

关于java - 为什么这个 if 语句不返回 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56179036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com