java - 在 Java 中返回布尔类型的结果
问题描述
我正在尝试解决这个问题:
编写一个名为 areFactors 的方法,它接受一个整数 n 和一个整数数组,如果数组中的数字都是 n 的因数(也就是说 n 可以被所有整数整除),则返回 true。
这是我的答案之一:
public static boolean arefactors(int n, int[] factors){
for (int factor:factors){
if (n % factor != 0)
return false;
}
return true;
}
但是为什么当我先反转并返回'true'时,程序不能正常工作并且无论我在数组中使用什么整数都总是返回true?在这种情况下:
public static boolean areFactors( int n, int[] factors) {
for (int factor: factors) {
if ( n % factor==0)
return true;
}
return false;
}
解决方案
因为您只需要返回,因为数组的true
所有int
s都可以被.
但是您在第二个代码中的第一个匹配时返回:factors
n
true
public static boolean areFactors( int n, int[] factors) {
for (int factor: factors) {
if ( n % factor==0)
return true; // only first element(s) of factors may be divisible
// by n and not the next one. But too late you returned true
}
return false;
}
虽然您的第一个代码是正确的:
public static boolean arefactors(int n, int[] factors){
for (int factor:factors){
if (n % factor != 0)
return false; // if any is not divisible by n, you return false
}
return true; // if you go there, it means all numbers are divisible by n
// you can then return true
}
推荐阅读
- c - 遍历列表时出现分段错误
- pandas - 基于多个条件的分割总数
- oracle - DBMS_OUTPUT 缓冲区大小(客户端或数据库端)
- angular - Angular 8 和 .NET Core 类型“可观察”
' 不可分配给类型 'Observable ' - bash - 设置配置文件时,Maven 退出 bash 运行,并且构建失败
- constructor - 将派生类的匿名对象传递给 Eiffel 中的例程
- spring - 如何在对话服务中使用自动连线服务
- flutter - 在提供者的消费者小部件内部的测试中找不到小部件
- react-native - 世博会管理工作流程的条带/订阅付款
- node.js - 是否可以运行 npx 工具在 Azure 中执行包