尝试将 char 转换为字符串以放入方法中;我哪里错了?

Posted

技术标签:

【中文标题】尝试将 char 转换为字符串以放入方法中;我哪里错了?【英文标题】:Tried converting a char to a string to place in a method; where am i going wrong? 【发布时间】:2017-03-27 15:59:34 【问题描述】:

我正在编写一个代码,将字符串中的字母替换为另一个字母。但是,我当前的任务需要特定格式的代码。我尝试了以下代码:

public String replaceLetter(String word, char letterToReplace, char replacingLetter)

    letterToReplace = Character.toString(letterToReplace);
    replacingLetter = Character.toString(replacingLetter);
    word = word.replaceAll(letterToReplace, replacingLetter);
    return word;

请原谅编码中的任何低效率,因为我对一般编程仍然相对较新。我最近也更深入地研究了字符和字符串,所以关于与它们有关的一些规则或特征,我有很多不知道的地方。我的代码中的错误是否不合逻辑?我目前使用的 IDE 是一个在线 IDE,其唯一目的是收集我的作业进行评分。每当我编译上面的代码时,它都会给我一些错误,例如缺少返回语句,所以我不会认为它是可靠的。 IDE 本身非常有限,不能编译 switch 语句之类的东西,所以我希望它尽可能简单。但是,我发现 IDE 可以识别最正确的编码。我确实尝试使用 for 语句进行编码:

public String replaceLetter(String word, char letterToReplace, char replacingLetter)

    for (int i = 0; i < word.length(); i++)
    
        char ca = word.charAt(i);
        if (ca == letterToReplace)
        
            word = (word.substring(0,i)+ replacingLetter + word.substring(i+1));
        
    
    return word;

但我也遇到了错误。任何帮助纠正我的语法将不胜感激。

【问题讨论】:

“但是我也遇到了错误。”什么错误? 编译器指出我对括号的使用可能不正确,或者我的 for 语句是非法的。这样做是众所周知的,但我相信我的错误在别处。 答案显示如果你使用toString,结果是String,你必须赋值给String变量。 Java 是强类型的,这意味着您不能通过为其分配不同类型的东西来更改变量的类型。但是,您实际上并不需要转换为字符串,因为 Java 有一个 replace 允许 char 参数:docs.oracle.com/javase/8/docs/api/java/lang/…。 【参考方案1】:

您尝试将使用Character.toString 创建的Strings 分配给现有的chars,然后将这些chars 传递给replaceAll 函数(不接受chars,它需要Strings)。尝试将您的代码更改为:

    public String replaceLetter(String word, char letterToReplace, char replacingLetter)
    
        String letterToReplaceAsString = Character.toString(letterToReplace);
        String replacingLetterAsString = Character.toString(replacingLetter);
        word = word.replaceAll(letterToReplaceAsString, replacingLetterAsString);
        return word;
    

编辑: 正如 ajb 指出的那样,您还可以调用 replace(而不是 replaceAll)传入您原来的 char 周长,并跳过分配您的 Strings 的步骤.请注意,replace 仍将替换所有出现的char

return word.replace(letterToReplace, replacingLetter);

【讨论】:

我现在明白了,感谢您的两条建议。我会在接下来的作业中记住它们。 没问题,很高兴能帮上忙。 :)【参考方案2】:

您的 letterToReplacereplacingLetter 变量是字符类型,您将 String 作为 Character.toString 分配给它们方法返回字符串。 将变量类型更改为 String 即可。

【讨论】:

以上是关于尝试将 char 转换为字符串以放入方法中;我哪里错了?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 C 中将 char[] 转换为 char*?

如何将字符串转换为char矩阵

怎么将字符串转换为char数组 java

尝试将字符串转换为 char[][] 时出现问题

将 uint16_t 转换为 char[2] 以通过套接字(unix)发送

如何将 python ndarray 转换为 c++ char*?