将字符串添加到列表中,其中的某个字母的数量会增加

时间:2016-04-19 04:18:44

标签: java loops arraylist

所以我有两个int vw,一个字符串q和一个列表list。 我需要这样做,以便list添加一个重复q的字符串,范围从vw

例如: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.不改变。

4 个答案:

答案 0 :(得分:3)

首先,首选StringBuilderString连接(污染 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)

可以使用StringUtils.repeat

完成
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"));
}