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