Java方法:整数包含1
我试图创建一个方法,如果输入的整数中有一个,则返回true;如果没有,则返回false。当输入的数字没有1或以1结尾时,该方法正常工作。但是如果一不是int中的最后一个数字,它将错误地返回false。有什么想法吗?怎么了?这是我的剧本:Java方法:整数包含1,java,Java,我试图创建一个方法,如果输入的整数中有一个,则返回true;如果没有,则返回false。当输入的数字没有1或以1结尾时,该方法正常工作。但是如果一不是int中的最后一个数字,它将错误地返回false。有什么想法吗?怎么了?这是我的剧本: public static boolean hasOne(int n) { boolean retval = false; if (n % 10 == 1) { retval = true; } else {
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只需使用
String.valueOf
return String.valueOf(x).contains("1");
尝试
String.valueOf(n).contains(“1”)
您可以使用递归函数,它更快:
public static boolean hasOne(int n) {
if(n<0) return hasOne(-n); // check for negatives
if(n==0) return false; // exit condition
if (n % 10 == 1) {
return true;
}
return hasOne(n/10);
}
你说的
有一个是什么意思?1000
计数吗?这是正确的提示:如果执行hasOne
的else部分,返回值将始终为false
为什么会发生这种情况?因为您达到了return retval
并且retval
的值仍然是false
。请注意,hasOne
的递归调用将有一个独立的retval
实例。我认为它应该检查negativesrue,并添加了一个修复程序。
String.valueOf(n).contains("1");