使用 for 循环重复字符串

Posted

技术标签:

【中文标题】使用 for 循环重复字符串【英文标题】:Repeating a string using a for loop 【发布时间】:2021-10-06 08:46:15 【问题描述】:

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

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 整数代替。 【参考方案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

【讨论】:

以上是关于使用 for 循环重复字符串的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的for循环创建大写字符串[重复]

在python IndexError中使用for循环反转字符串:字符串索引超出范围[重复]

For循环:通过字符迭代 - Javascript [重复]

For循环问题中的PHP字符迭代[重复]

如何使用for循环将文本文件中的一行字符串作为Bash中另一个脚本的单独变量传递[重复]

使用Python for循环,我怎样才能每次都从一个字符串中取出一个字母而没有任何重复