Coding bat是一个使用JAVA或Python测试候选人的逻辑和推理能力的网站。我正在尝试以下问题而无法继续:
给定非负数“num”,如果num在10的倍数的2中,则返回true。注意:(a%b)是除以b的余数,因此(7%5)是2另见:Mod简介
nearTen(12)→是的 nearTen(17)→false nearTen(19)→true
我写的代码是:
{
public boolean nearTen(int num) {
if (num==10 || num==1){
return true;}
else if (num<10){
return false;}
else if ((num+2)%10==0 || ((num-2)%10==0)){
return true;}
else if ((num+1)%10==0 || ((num-1)%10==0)){
return true;}
else{
return false;}
}
}
你们中的任何人都可以告诉我的错误,以便我可以改进吗?
答案 0 :(得分:2)
您必须检查给定数字的模数是否小于或等于2(<= 2
),或大于或等于8(>= 8
)。
您不必检查任何特殊值,因为没有任何特殊值,它们会回答问题的一般逻辑。
public boolean neatTen (int num) {
if (num%10 <= 2 || num%10 >= 8) {
return true;
} else {
return false;
}
}
如果您必须考虑负值,则必须使用Math.abs()
使数字为正数,但这对代码的改动非常小。
如果你想把它作为一个单行:
return (num%10 <= 2) ? true : (num%10 >= 8) ? true : false ;
答案 1 :(得分:0)
如果除以10后的余数为0,1,2,8或9,则返回true。
public boolean nearTen (int num) {
if (num%10 <= 2 || num%10 >= 8)
return true;
return false;
}
答案 2 :(得分:0)
def near_ten(num): 返回(num + 2)%10 <= 4
答案 3 :(得分:-1)
如果我理解了这个问题,那么你只需要使用mod(%)并检查提醒是否为&lt; = 2或&gt; = 8。
public static boolean nearTen(int num) {
if (num==10 || num==1){
return true;
}
else if (num<10 && 10-num<2){
return true;
}
else if (num%10<=2 || num%10>=8){
return true;
}
else{
return false;
}
}