微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用递归将字符串中的字符大写?

如何解决如何使用递归将字符串中的字符大写?

我目前正在第一次学习 Java 递归,但遇到了一个问题。任务是接收字符串 s 和 char x,如果出现在字符串中,则将字符 x 大写,并将所有非 x 字符小写。 (即,如果 x 是 'g',Digging 返回 diGGinG)。现在,我的代码返回“iggingggingGINGINGngg”

我知道代码可能有很多缺陷,但是没有很多类似的递归问题可用,我不知道从哪里开始我的错误。任何指针表示赞赏。

public class Capitalize {
public static String capitalize(String s,char x) {
    if(s.length() == 0) {
        return s;
    }
    String ans = "";
    if(s.charat(0) == x) {
        ans += s.substring(1).toupperCase();
    }
    else {
        ans +=s.substring(1).toLowerCase();
    }
    return ans + capitalize(s.substring(1),x);
}

public static void main(String[]  args) {
    System.out.println(capitalize("Digging",'g')); //return diGGinG
}

}

解决方法

对子串的使用有误解

System.out.println("Digging".substring(1)); // output : igging

要获得您应该使用的唯一第一个元素:

System.out.println("Digging".substring(0,1)); // output : D

试试这个:

public static void main(String []args){
    System.out.println(capitalize("Digging",'g')); // output : diGGinG
    
 }
public static String capitalize(String s,char x) {
    if(s.length() == 0) {
        return s;
    }
    String ans = "";
    if(s.charAt(0) == x) {
        ans += s.substring(0,1).toUpperCase();
    }
    else {
        ans +=s.substring(0,1).toLowerCase();
    }
    return ans + capitalize(s.substring(1),x);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。