Java 反转字符串而不使用。反转方法和for循环?

Java 反转字符串而不使用。反转方法和for循环?,java,reverse,Java,Reverse,今天我的讲师给了我这个代码,我有点困惑: ** String removeAll(char c, String s) { String to_return = ""; while(true) { if (s.equals("")) return to_return; // at this point s is not "" char c2 = s.charAt(0); if (c2 !=

今天我的讲师给了我这个代码,我有点困惑:

** String removeAll(char c, String s) {

    String to_return = "";

    while(true) {
        if (s.equals(""))
            return to_return;

        // at this point s is not ""
        char c2 = s.charAt(0);
        if (c2 != c)
        {
            to_return += c2;
        }

        s = s.substring(1);
    }

    return to_return; // won't be reached
}

print(removeAll('o',"hello"));**
以下是我对代码的解释:

  • 如果s等于零,则返回到_return<极端不获取
  • c2=等于字符串s的第一个字符
  • 如果c2不等于c,则返回+=c2<不完全理解

  • 它接受字符串
    s
    (方法的参数)并查看第一个字符。如果不是
    c
    字符,则将其添加到返回字符串的末尾,然后从
    s
    中删除第一个字符

    剩下的是相同的字符串,但没有字符
    c
    的任何实例

    s = "hello"
    return = ""
    
    第一个循环:

    s = "hello" (set c2 to first char)
    c2 = "h" (h is not 'o')
    return = "h" (append c2 to end)
    
    第二个循环:

    s = "ello"
    c2 = "e"
    return = "he"
    
    第三圈:

    s = "llo"
    c2 = "l"
    return = "hel"
    
    第四圈:

    s = "lo"
    c2 = "l"
    return = "hell"
    
    第五圈:

    s = "o"
    c2 = "o" ("o" matches 'o' character)
    return = "hell" (c2 isn't appended)
    
    第六圈:

    s = "" (loop ends)
    
    while循环中的行:

    if(s.equals("")) return to_return;
    
    表示如果s是空字符串,则返回“return_to”的值,该值结束循环并退出方法

    由于while()循环永远不会结束,因此永远不会到达最后一条return语句

  • 如果字符串“s”为null,则方法s.equals(“”)返回null,程序仅在此终止

  • 通过c.charAt(0),您将获得字符串的第一个字符

  • 如果字符串“s”的第一个字符不是“c”,则另一个字符的ASCII值将递增1。例如,如果字符串“s”的第一个字符是“a”,那么它将返回“b”作为答案


  • 你试过在纸上解决它吗?从长度为0的字符串开始,然后是1,依此类推……“如果s.等于零,则返回到_return”,这意味着如果传入的字符串为空,则返回空字符串。您不能对使用
    ,但可以在
    时使用
    ?因为代码甚至都没有编译。推理它的作用有什么意义?你的标题与问题的主体无关。@JBNizet是的,我编辑了我的答案,部分是因为问题的标题而被误导了