如何重复一段文字中的每个字母? 在Java中

如果在文本是“院长”和乘数3的情况下,由于所提供的乘数指定的次数,结果将是“dddeeeaaannn”。

public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(text); for (int i = 0; i < n; i++) { repeat.append("dean"); } System.out.println(text); } 

没有得到所需的结果。 我究竟做错了什么?

您只是为其中的每个字符附加字符串本身n次。 您需要遍历字符串并将每个字符追加n次。

 public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length(); i++) { for (int j = 0; j < n; j++) { repeat.append(text.charAt(i)); } } System.out.println(repeat); } 

另外,另一种解决方案是使用正则表达式。

 public static void repeatLetters() { String text = "dean", replace = ""; int n = 3; for (int i = 0; i < n; i++) replace += "$1"; System.out.println(text.replaceAll("(.)", replace)); } 

两个问题:

  1. 您没有打印已操作的字符串,而是打印您开始使用的原始字符串,即"dean" 。 要从StringBuilder打印字符串,您可以使用

    的System.out.println(重复);

  2. 您将整个单词"dean"到原始单词中,而不是添加单个字母/字符。 您需要遍历原始单词中的每个字母,并将这些字母添加到空StringBuilder 。 以下是您应该使用的基本逻辑:

    • 得到原始单词(“院长”)
    • 创建一个空的 StringBuilder
    • 通过使用for循环并获取字符串中的每个字符或使用String.split并解析数组来解析原始单词(“dean”)的每个字母。
    • 对于原始单词中的每个字母,将带有该字母的该字母附加到您的StringBuilder n次。
    • 解析完原始单词中的所有字母后,从StringBuilder打印字符串。

您只需将“dean”一词附加到字符串的末尾三次。

尝试循环遍历单词dean中的每个char并将该char附加三次。

像这样的东西(这是伪代码):

 StringBuilder repeat = new StringBuilder(); ForEach( letter in "dean" ) For( int i = 0 ; i < 3 ; i++ ) repeat.add(letter); Return repeat 

你在这里重复整个词……一个可能的解决办法是

 public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length() ; i++) { for (int j= 0; j< n; j++) repeat.append(text.charAt(i)); } System.out.println(repeat); }