我想知道是否可以通过循环使用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);
}
答案 0 :(得分:2)
finish.concat(state)
返回一个新的String,因此您必须分配到finish
变量,以便保留对新String的引用:
finish = finish.concat(state);
你已经在循环之前完成了它,但是在循环内你没有做任何返回值为concat
的事情,因此循环没有任何改变。
答案 1 :(得分:0)
几点变化。
1。)循环不正确。
应该如下所示,如果num > 1
然后在循环中连接。
if (num > 1) {
for (int i = 0 ; i < num ; i++) {
finish = finish.concat(state);
}
} else {
finish = finish.concat(state);
}
2。)finish.concat(state)
返回一个新的String,因此你必须分配到finish变量
finish = finish.concat(state); // **remember Strings are immutable**
完成计划
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);
}
}
<强>输出强>
Type a word:
ankur
Number of Concatenation:
2
ankurankur
Type a word:
ankur
Number of Concatenation:
1
ankur
Type a word:
ankur
Number of Concatenation:
3
ankurankurankur
答案 2 :(得分:0)
您可以使用以下代码。
String is immutable
所以你必须存储返回的值。
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);