Java 手工实现String.length方法

Java 手工实现String.length方法,java,string,Java,String,我必须手动实现Stringclass中的.length方法,我不知道,希望您能提供帮助。 除以下方法外,不允许使用其他方法或功能: String.charAt() String.substring() String.isEmpty() 位运算&、|、&&、| |、>>>、!=== 算术运算 for和while循环 递归 if-else语句 自行创建的方法(int、String、char、boolean等) 自行创建的阵列。(没有他们的方法) }在每次迭代中删除第一个字符时,可以循环,直到字符串为

我必须手动实现
String
class中的.length方法,我不知道,希望您能提供帮助。 除以下方法外,不允许使用其他方法或功能:

  • String.charAt()
  • String.substring()
  • String.isEmpty()
  • 位运算&、|、&&、| |、>>>、!===
  • 算术运算
  • for和while循环
  • 递归
  • if-else语句
  • 自行创建的方法(int、String、char、boolean等)
  • 自行创建的阵列。(没有他们的方法)

  • }

    在每次迭代中删除第一个字符时,可以循环,直到
    字符串
    为空

    static int manual_length(String str) {
        int len = 0;
        while(!str.isEmpty()){
           ++len;
           str = str.substring(1);
        }
        return len;
    }
    
    这也可以转换为尾部递归方法

    static int manual_length(String str) {
        return str.isEmpty() ? 0 : 1 + manual_length(str.substring(1));
    }
    
    另一种方法是通过递归,但我也问自己,我该怎么做 表示递归的极限。我如何表达:

    .... lengthMethod1(String length, int ???) {
    
      if(n == 0) {
         return length.charAt(0);
      }
      else {
         
         return ???? lengthMethod1(length, n - 1);
    
    是的,您可以这样递归地执行:

    static int manual_length(String str, int len) {
            return str.isEmpty() ? len : manual_length(str.substring(1), len + 1);
        }
    

    使用累加器变量(即len)递增,同时从字符串中删除字符(即
    str.substring(1)
    )。当到达末尾(即
    str.isEmpty()
    )时,返回累加器。

    在参数len中输入0,则答案正确。谢谢
    static int manual_length(String str, int len) {
            return str.isEmpty() ? len : manual_length(str.substring(1), len + 1);
        }