【问题标题】:Repeating a string using a for loop使用 for 循环重复字符串
【发布时间】:2026-01-14 10:20:06
【问题描述】:

我对编程很陌生。我正在尝试将给定字符串中的单词重复相同字符串中给定数字的次数。我决定遍历字符串并将每个字符添加到一个新字符串中以打印出来,但我得到了一个超出索引的错误。

final String string = "Hello";
final int num = 3;

int number = string.length() * num;
String str = "";

for (int i = 0; i < number; i++) {
    str += string.charAt(i);
}

System.out.println(str);

【问题讨论】:

  • 感谢您的解决。注意到,我将接受未来的代码。
  • 一个输入和输出的例子可以改进这个问题。
  • 顺便说一下,Java 中的char 类型已经过时了。甚至无法处理 Unicode 中定义的一半字符。学习使用 Unicode code point 整数代替。

标签: java string for-loop


【解决方案1】:

从零开始的索引

您收到错误是因为i 的值超出了Hello 中可用的最后一个索引。 Hello 中的最后一个索引是 "Hello".length() - 1i 的值超出了这个值,因为你的循环终止条件:

i < string.length() *  num;

顺便说一句,如果你想重复Hello 3次,你应该这样做

for(int i = 0; i < num; i ++){
   System.out.print(string);
}

演示:

public class Main {
    public static void main(String[] args) {
        final String string = "Hello";
        final int num = 3;
        for (int i = 0; i < num; i++) {
            System.out.print(string);
        }
    }
}

String#repeat

在 Java 11+ 中,您可以通过使用 String#repeat 来做到这一点,而无需使用循环:

System.out.println(string.repeat(num));

演示:

public class Main {
    public static void main(String[] args) {
        final String string = "Hello";
        final int num = 3;
        System.out.println(string.repeat(num));
    }
}

【讨论】:

  • 感谢您解释为什么我摆脱了索引错误。这确实帮助我解决了我的问题。
【解决方案2】:

保持简单

String string = "Hello";
int num = 3;
for (int i = 0; i < num; i++) {
    System.out.println(string);
}

如果您想在新的String 中获得结果,您可以这样做:

String string = "Hello";
int num = 3;
String res = "";
for (int i = 0; i < num; i++) {
    res += string;
}
System.out.println(res);

【讨论】:

  • 我没有意识到我可以将原始字符串添加到新字符串中,而不是尝试添加我循环的每个字符。谢谢!
【解决方案3】:

既然你说你正在学习,就在这里添加这个。 Java有一个StringBuilder类,超级好用

据此,这个使用 StringBuilder 的独立类比 concatenate 更高效。

StringBuilder vs String concatenation in toString() in Java

【讨论】: