Java:Numb1和Numb2,并检查Numb1是否具有前缀Numb2

Java:Numb1和Numb2,并检查Numb1是否具有前缀Numb2,java,Java,如果给定的前缀是数字的真前缀,则程序应返回真。但是我的程序返回false。 e、 g System.out.println(hasPrefix(12345,1));//真的 System.out.println(hasPrefix(12345123));//真的 System.out.println(hasPrefix(12345,34));//假的 System.out.println(hasPrefix(12345,0));//假的 我不知道问题出在哪里,非常感谢您的帮助。将它们都转换为字符

如果给定的前缀是数字的真前缀,则程序应返回真。但是我的程序返回false。 e、 g

System.out.println(hasPrefix(12345,1));//真的

System.out.println(hasPrefix(12345123));//真的

System.out.println(hasPrefix(12345,34));//假的

System.out.println(hasPrefix(12345,0));//假的


我不知道问题出在哪里,非常感谢您的帮助。

将它们都转换为字符串,然后使用startsWith方法检查“number”是否以“prefix”开头


如前所述,这个问题可以使用字符串概念来解决。下文也将给出

public static boolean hasPrefix(int number, int prefix){
        String numberAsString = Integer.toString(number);
        String prefixAsString = Integer.toString(prefix);
        if(numberAsString.startsWith(prefixAsString)){
            return true;
        } else{
            return false;
        }
    }

将在同一行中工作。

是否尝试调试代码?在递归调用hasPrefix(number,prefix)之前,您缺少“return”关键字,因此它将始终在“return false;”行的下方继续。
public static boolean hasPrefix(int number, int prefix){
        String numberAsString = Integer.toString(number);
        String prefixAsString = Integer.toString(prefix);
        if(numberAsString.startsWith(prefixAsString)){
            return true;
        } else{
            return false;
        }
    }
public static boolean hasPrefix(int number, int prefix) {
        return String.valueOf(number).startsWith(String.valueOf(prefix)) ? true :false;
    }