所以我有两个int v
和w
,一个字符串q
和一个列表list
。
我需要这样做,以便list
添加一个重复q
的字符串,范围从v
到w
。
例如:v为2,w为4,q为" a"。 在程序完成时,列表应该是[aa,aaa,aaaa]。
我做过类似的各种程序,我觉得这很容易,我仍然认为这是因为某些原因我错过了一些东西。我试图通过
来解决这个问题for (int j = v; j <= w; j++) {
String s = "";
for (int k = 0; k < j ; k++) {
s+=q;
}
list.add(s);
}
但这只是给出了一定数量的Q.不改变。
答案 0 :(得分:3)
首先,首选StringBuilder
到String
连接(污染 intern
缓存为一个)。您需要首先循环v
次来创建初始String
;然后追加q
。像
int v = 2;
int w = 4;
String q = "a";
List<String> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < v; i++) {
sb.append(q);
}
for (int j = v; j <= w; j++) {
list.add(sb.toString());
sb.append(q);
}
System.out.println(list);
输出(按要求)
[aa, aaa, aaaa]
答案 1 :(得分:3)
你搞砸了其他东西。这很好。
对于记录,我的预测是:“您正在重复打印带有list.get(0)的代码,因为此函数有效。您没有遍历列表,而是打印了第一个条目list.size()次“。
var list = []
var v = 2;
var w = 4;
var q = "a"
for (var j = v; j <= w; j++) {
var s = "";
for (var k = 0; k < j ; k++) {
s = s + q;
}
list.push(s);
}
document.write(list)
答案 2 :(得分:0)
已解决 - 问题在于v&amp; W上。感谢所有回答或贡献的人,我将在未来考虑这些新技术。
答案 3 :(得分:-1)
for (int j = v; j <= w; j++) {
list.add(StringUtils.repeat("q", j));
}
还有一种方法是使用本机安卓代码并在一行中而不是使用两个循环
for (int j = v; j <= w; j++) {
list.add(String.format(String.format("%%%ds", j), " ").replace(" ","q"));
}