Java方法:整数包含1

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 {

我试图创建一个方法,如果输入的整数中有一个,则返回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

只需使用
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");