Java 如何修复代码以解决此问题?
有一个Java编码问题,如果给定的非负数小于20的倍数1或2,则返回Java 如何修复代码以解决此问题?,java,Java,有一个Java编码问题,如果给定的非负数小于20的倍数1或2,则返回true。例如,38和39返回true,但40返回false 我的代码: public boolean less20(int n){ if(n%20==0){ return false; }else if(n>20 && n%20!=0){ return false; }else if(20-n>2){ return false;
true
。例如,38和39返回true
,但40返回false
我的代码:
public boolean less20(int n){
if(n%20==0){
return false;
}else if(n>20 && n%20!=0){
return false;
}else if(20-n>2){
return false;
}else if((n+1)%20!=0||(n+2)%20!=0){
return true;
}else{
return true;
}
}
该代码适用于大多数情况,但其中一些根本不起作用,例如n=58或n=59
如何修复代码并使用最简单的方法解决此问题?对于一个简单的解决方案,
(n+1)%20==0 | |(n+2)%20==0
应该这样做。我对mod方法感到困惑,但现在我完全理解了它。非常感谢:)第1步修复代码:格式化代码(也称为缩进代码)以便于人类阅读。@1BLASTONE更简单:返回n%20>=18
您提到了非负数,所以您应该对负数抛出异常,或者使用Math.floorMod
以便它也适用于负数。