Java 中的逻辑或不起作用?
logical OR in Java not working?
我对 Java 还是很陌生,我正在努力理解为什么当模数不等于 0 时我的代码只 return "false",而忽略了另外两种情况,即当除数为 0 且数组为空时。
如果除数 = 0,我得到 java.lang.ArithmeticException
:除以零
由于某种原因,空数组可以被 0 整除,那怎么可能呢?
非常感谢任何帮助,谢谢!
public boolean Divisible(ArrayList<Integer> array1, int divisor) {
int i;
int modulo;
boolean isDiv=true;
for(i=0; i<arr.size(); i++){
modulo=((arr.get(i)%divisor));
i++;
if(modulo!=0 || divisor==0 || arr.isEmpty())
{
isDiv= false;
break;
}
}
return isDiv;
}
在你做任何事情之前检查一个空列表或一个 0 除数。
if(divisor==0||array1.isEmpty()){
return false;
}
然后你可以查看列表。
for(Integer i: array1){
if(i%divisor!=0){
return false;
}
}
终于。
return true;
主要问题是您在 for 循环内执行 OR 检查,但如果 for 循环迭代 0 次,则永远不会检查条件,所以您遇到了这个问题。
这是你的函数的修改版本,我将检查条件移到了 for 循环之外:
public boolean Divisible(ArrayList<Integer> array1, int divisor)
{
int i;
int modulo;
boolean isDiv = true;
if(array1.isEmpty()) // Check array1.isEmpty() outside for loop.
{
isDiv = false;
}
else if(divisor == 0) // Check divisor outside for loop.
{
isDiv = false;
}
else
{
for(i = 0; i < arr.size(); i++)
{
modulo = (arr.get(i) % divisor);
// i++; i is already increased by for instruction.
if(modulo!=0 /*|| divisor==0 || arr.isEmpty()*/) // Only modulo must be checked here.
{
isDiv= false;
break;
}
}
}
return isDiv;
}
我对 Java 还是很陌生,我正在努力理解为什么当模数不等于 0 时我的代码只 return "false",而忽略了另外两种情况,即当除数为 0 且数组为空时。
如果除数 = 0,我得到 java.lang.ArithmeticException
:除以零
由于某种原因,空数组可以被 0 整除,那怎么可能呢?
非常感谢任何帮助,谢谢!
public boolean Divisible(ArrayList<Integer> array1, int divisor) {
int i;
int modulo;
boolean isDiv=true;
for(i=0; i<arr.size(); i++){
modulo=((arr.get(i)%divisor));
i++;
if(modulo!=0 || divisor==0 || arr.isEmpty())
{
isDiv= false;
break;
}
}
return isDiv;
}
在你做任何事情之前检查一个空列表或一个 0 除数。
if(divisor==0||array1.isEmpty()){
return false;
}
然后你可以查看列表。
for(Integer i: array1){
if(i%divisor!=0){
return false;
}
}
终于。
return true;
主要问题是您在 for 循环内执行 OR 检查,但如果 for 循环迭代 0 次,则永远不会检查条件,所以您遇到了这个问题。
这是你的函数的修改版本,我将检查条件移到了 for 循环之外:
public boolean Divisible(ArrayList<Integer> array1, int divisor)
{
int i;
int modulo;
boolean isDiv = true;
if(array1.isEmpty()) // Check array1.isEmpty() outside for loop.
{
isDiv = false;
}
else if(divisor == 0) // Check divisor outside for loop.
{
isDiv = false;
}
else
{
for(i = 0; i < arr.size(); i++)
{
modulo = (arr.get(i) % divisor);
// i++; i is already increased by for instruction.
if(modulo!=0 /*|| divisor==0 || arr.isEmpty()*/) // Only modulo must be checked here.
{
isDiv= false;
break;
}
}
}
return isDiv;
}