有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何实现str与int递归,一次一个字符?

所以我被困在这个问题上,这里有一个方法equalNumbers(String str, int num),它确定str中的字符是否表示与num相同的数字。空字符串等于零

equalNumbers("123", 123) true
equalNumbers("9", 999) false

等等

这个方法应该是递归的,所以没有循环,也没有使用像Integer.parseIntInteger.valueOfinteger.decode()这样的东西。允许使用助手函数

它鼓励使用charAt(index)Character.gerNumericValue(ch)

===

基于它鼓励我做的事情,我想它希望我逐个字符地遍历字符串,将该字符转换为整数,并一次将其与整数中的一个数字进行比较。似乎我唯一可以做的转换是从char到int。所以我的问题是:

  1. 我应该用字符构建一个字符串,然后将整个字符串转换成整数吗?(我认为这是不允许的)
  2. 是否可以在整数中逐个索引,而不将其转换为字符串

我会展示我自己的代码,但我对这些数据类型如何工作有一个概念上的差距


共 (1) 个答案

  1. # 1 楼答案

    通常,公共函数调用带有额外参数的私有递归函数。 对于使用get_int_at_index的代码,需要传递额外的递归函数i

    在您的情况下,这是不需要的,但是您需要使用String(使用charAt检查一小部分)和int。现在我怀疑String.valueOf(int)不是故意的,而是通过模10(% 10)检查数字的一小部分,一个数字

    取模10将首先给出最右边的数字,因此:

    int num

    • int digit = num % 10; // Tiny part we deal with
    • num = num / 10; // Rest

    String str

    • char ch = str.charAt(str.length() - 1); // Tiny part
    • str = str.substring(0, str.length() - 1); // Rest

    所以

    public static boolean equalNumbers(String str, int num) {
        if (str.isEmpty()) { // End recursion.
            return num == 0;
        }
        char ch = str.charAt(str.length() - 1);
        int digit = num % 10;
        if (Character.getNumericValue(ch) != digit) {
            return false;
        }
        str = str.substring(0, str.length() - 1);
        num = num / 10;
        return equalNumbers(str, num); // Recurse.
    }