【发布时间】:2017-12-24 06:33:22
【问题描述】:
我正在尝试创建一个方法,如果输入的整数中有一个,则返回 true,否则返回 false。当输入的数字没有 1 或以 1 结尾时,该方法可以正常工作。但是如果这个不是 int 中的最后一位,它会错误地返回 false。有什么想法有什么问题吗?这是我的脚本:
public static boolean hasOne(int n) {
boolean retval = false;
if (n % 10 == 1) {
retval = true;
} else {
dropLastDig(n);
}
return retval;
}
public static void dropLastDig(int input) {
int newNum = input/10;
if (newNum > 0) {
hasOne(newNum);
}
}
1000 应该返回 true
211 应该返回 true
1 应该返回 true
3 应该返回 false
234 应该返回 false
【问题讨论】:
-
has a one是什么意思?1000算不算? -
没错
-
提示:如果你执行
hasOne的else部分,返回值总是false -
为什么会这样?
-
因为你到达
return retval,而retval的值仍然是false。请注意,hasOne的递归调用将具有retval的独立实例。
标签: java