Java 使用.concat进行循环连接,而不使用just循环
我想知道是否有办法将Java 使用.concat进行循环连接,而不使用just循环,java,Java,我想知道是否有办法将String::concat与循环一起使用,而不是使用StringBuilder/StringBuffer 我这样试过,但没用。有人能帮忙解决这个问题吗?或者给我一些建议让我自己试试 public class multiConcat { public static void main(String[] args) { int num = 0; String finish = ""; Scanner reader
String::concat
与循环一起使用,而不是使用StringBuilder
/StringBuffer
我这样试过,但没用。有人能帮忙解决这个问题吗?或者给我一些建议让我自己试试
public class multiConcat {
public static void main(String[] args) {
int num = 0;
String finish = "";
Scanner reader = new Scanner(System.in);
System.out.println("Type a word: ");
String state = reader.next();
System.out.println("Number of Concatenation: ");
num = reader.nextInt();
finish = state.concat(state);
for (int i = 0; i == num; i++) {
finish.concat(state);
}
System.out.println(finish);
}
}
我认为这将是与x=x+1
相同的想法,即不断覆盖值
多谢各位
你的意思是这样
for (int i = 0; i == num; i++) {
finish = finish.concat(state);
}
finish.concat(state)
返回一个新字符串,因此您必须为finish
变量赋值,以便保留对新字符串的引用:
finish=finish.concat(状态)代码>
您已经在循环之前执行了此操作,但在循环内部,您没有使用返回值concat
执行任何操作,因此循环不会更改任何内容。很少更改
1.)循环不正确
应该如下所示,如果num>1
,则在循环中串联
if (num > 1) {
for (int i = 0 ; i < num ; i++) {
finish = finish.concat(state);
}
} else {
finish = finish.concat(state);
}
完整程序
public class multiConcat {
public static void main(String[] args) {
int num = 0;
String finish = "";
Scanner reader = new Scanner(System.in);
System.out.println("Type a word: ");
String state = reader.next();
System.out.println("Number of Concatenation: ");
num = reader.nextInt();
if (num > 1) {
for (int i = 0 ; i < num ; i++) {
finish = finish.concat(state);
}
} else {
finish = finish.concat(state);
}
System.out.println(finish);
}
}
您可以使用下面的代码
字符串是不可变的
,因此您必须存储返回的值
String finish = new String();
finish = finish.concat("Any Value");
使用StringBuilder
或StringBuffer
可以这样做
StringBuilder finish = new StringBuilder();
finish.append(state);
StringBuffer finish = new StringBuffer();
finish.append(state);
你能把你得到的错误贴出来吗?而且,第一个短语有点混乱,考虑得更清楚。我没有任何编译错误。我想做的是,如果我在单词中输入“hi”,并且我想对我的世界进行4次concat,那么结果会是“hihihi”对不起,语法不好,concat不会修改字符串。使用finish=finish.concat(状态)代码>。并删除该行finish=state.concat(state)代码>忽略if语句对不起。。。我发错代码了。。我试着自己做一些事情,我试着让它这样,如果人们希望它连接不到两次,它只会输出word@JasonKim好的,你可以为@JasonKim设置一个过滤器。如果答案能解决你的问题,请投票/接受答案。我还有两个question@JasonKim您没有解决for循环中的问题,这是我在回答中的意思。谢谢你的回答。下次我将尝试使用Stringbuilder和Stringbuffer:DNo问题。但有一条建议,如果要更改字符串值,最好使用StringBuilder或Stringbuffer。因为每次调用concat时,都会为该字符串分配新内存,因为该字符串是不可变的。
String finish = new String();
finish = finish.concat("Any Value");
StringBuilder finish = new StringBuilder();
finish.append(state);
StringBuffer finish = new StringBuffer();
finish.append(state);