【问题标题】:converting printout out char in return statement [closed]在返回语句中转换打印输出字符 [关闭]
【发布时间】:2013-11-21 00:46:40
【问题描述】:

不能使用数组 只是想打印出 convert 或者在 if 语句作为 return 之后 convert 会说什么

不能使用 .toCharArray

public static void main (String[] arg) {
    System.out.println(ConvertToL33t("cow life" ));
}

public static String ConvertToL33t (String s)
{

    String max= s;
    System.out.println(max);
    char convert = (char) s.toLowerCase().charAt(0);
    for(int i = 0; i < max.length(); i++){
        switch(convert){

        case 'e':
            convert = '3';
            break;
        case 'o':
            convert  = '0';
            break;
        case 'l':
            convert = '1';
            break;
        case 't':
            convert = '7';
            break;
        case 'a':
            convert = '4';
            break;
        }
    }
return convert;

【问题讨论】:

  • 我无法解析第一行的英文。请改写。
  • 我没有看到if 声明...你的意思是switch

标签: java string char


【解决方案1】:

字符串是不可变的,你不能只替换同一个字符串中的一个字母。您将必须根据前一个字符串构造一个新字符串。一种方法是遍历旧字符串中的每个字符并将其添加到新字符串中,同时替换您想要的字符。

建议使用StringBuilder,因为使用常量连接会更有效。

尝试以下方法:

StringBuilder sb = new StringBuilder();
for(char convert : s.toCharArray()){
  switch(convert){
        case 'e':
            sb.append("3");
            break;
        case 'o':
            sb.append("0");
            break;
        case 'l':
            sb.append("1");
            break;
        case 't':
            sb.append("7");
            break;
        case 'a':
            sb.append("4");
            break;
        }
}

return sb.toString();

【讨论】:

  • +1 仅回答提出的问题并将其余问题留作学习经验 :-)
  • 我不能使用数组这就是问题
  • @user3015113:母舰不允许我在危及生命的情况下使用我的读心能力,抱歉。 - 实际上:自己建造!遍历字符串并使用charAt() 获取当前字符。基本上只要把你的帖子和我的回答结合起来,你就很好了。