Java:如何使用循环创建字符串而无需打印?

Java:如何使用循环创建字符串而无需打印?,java,string,Java,String,我是java的初学者,有一个概念对我来说相当不清楚。我需要创建一个通过复制另一个字符串来创建新字符串的方法。例如,如果String1是“java”,并且指定它需要重复4次,并且每个字符串都需要用逗号分隔,那么新字符串将如下所示:java,java,java,java 但是,该方法不应该打印它,而应该只创建一个新字符串,然后在主程序中打印该字符串。这对我来说是个问题,因为我很难理解,如何使用循环来创建一些东西而不打印它。我认为以下代码可以正确打印它: public static void repl

我是java的初学者,有一个概念对我来说相当不清楚。我需要创建一个通过复制另一个字符串来创建新字符串的方法。例如,如果String1是“java”,并且指定它需要重复4次,并且每个字符串都需要用逗号分隔,那么新字符串将如下所示:java,java,java,java

但是,该方法不应该打印它,而应该只创建一个新字符串,然后在主程序中打印该字符串。这对我来说是个问题,因为我很难理解,如何使用循环来创建一些东西而不打印它。我认为以下代码可以正确打印它:

public static void replicate(String str, int times) {
   for (int i = 0; i < times; i++) {
      System.out.print(str);
      if (i < times -1) {
         System.out.print(", ");
      }
   }
}
publicstaticvoidreplicate(字符串str,整数倍){
for(int i=0;i

如何对其进行转换,以便在不打印的情况下使用该方法创建新字符串?我假设这是一件非常简单的事情,但我完全不知道如何做到这一点,因为每本指南都只使用在这种情况下打印的示例。

使用类很容易做到这一点,可以这样使用:

public static String replicate(String str, int times) {
   StringBuilder builder = new StringBuilder();

   for (int i = 0; i < times; i++) {
      builder.append(str);
      if (i < times - 1) {
         builder.append(", ");
      }
   }

   return builder.toString();
}
公共静态字符串复制(字符串str,int次){
StringBuilder=新的StringBuilder();
for(int i=0;i
这对于集合和连接更好

import java.util.*;
public class Main 
{
    public static void main(String[] args) 
    {


        String newstr=String.join(",", Collections.nCopies(3, "java"));
        System.out.println(newstr);
    }
}

工作小提琴-

一个选项是使用
StringBuilder
,如所示。由于每次都使用相同的分隔符,因此要使用另一个选项。下面是一个例子:

公共静态字符串复制(字符串str,int次){
细木工=新细木工(“,”);
for(int i=0;i
我想这是一件非常简单的事情

你说得对。虽然其他答案显示了各种帮助器类,但您可以通过重新分配单个
字符串
变量来完成:

public static String replicate(String str, int times) {
   String result="";
   for (int i = 0; i < times; i++) {
      result += str; //System.out.print(str);
      if (i < times -1) {
         result += ", "; //System.out.print(", ");
      }
   }
   return result;
}
后一种“技巧”也可用于
StringBuilder
,当然:

public static String replicate(String str, int times) {
   StringBuilder result = new StringBuilder(str);
   for (int i = 1; i < times; i++) {
      result.append(", ");
      result.append(str);
   }
   return result.toString();
}
公共静态字符串复制(字符串str,int次){
StringBuilder结果=新的StringBuilder(str);
for(int i=1;i

顺便说一句,值得一提的是,
StringBuilder
的故事是:当Java看到
something=string1+string2
时,它在内部写入
StringBuilder temp=new StringBuilder(string1);临时附加(string2);something=temp.toString()
(当然它是一个未命名的内部变量,而不是“temp”)。因此,一个全新的
StringBuilder
对象被创建、附加、转换回一个全新的
String
,并且每次都被丢弃。这就是为什么建议的方法是使用一个专用的
StringBuilder
,多次使用它,最后只从中获得一次结果。

以下代码对于无法使用所有Java库的学术用途应该很有用。您希望使用一个变量来存储重复的文本,然后将该变量返回到main方法以打印它。出于非学术目的或在效率优先的情况下,应使用目标

 public static String replicate(String str, int times) {
    String newString = "";
    for (int i = 0; i < times; i++) {
        newString = newString + str;
        if(i<times-1){
            newString = newString + ", ";
        }
    }
    return newString;
}
公共静态字符串复制(字符串str,int次){
字符串newString=“”;
for(int i=0;i public static String replicate(String str, int times) {
    String newString = "";
    for (int i = 0; i < times; i++) {
        newString = newString + str;
        if(i<times-1){
            newString = newString + ", ";
        }
    }
    return newString;
}