2016-04-19 29 views
1

所以我有两个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); 
} 

但是,这只是给出了一个常数的问题。没有改变。

+2

你的代码看起来很适合我。如果你的代码没有给出正确的输出,请给我们一个[MCVE](http://stackoverflow.com/help/mcve),我们可以运行并重现错误的输出。 – ajb

+1

那么他会得到qq,qqq,qqqq – Tatarize

+1

当你说:* q是“a”。列表应该是[qq,qqq,qqqq] * - 您的意思是列表应该是'[“aa”,“aaa”,“aaaa”]'?我很确定这就是你的意思。 –

回答

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] 
+0

只是出于好奇:我想知道为什么字符串连接污染了实习生缓存。这是我的理解,只有不断的字符串,其中隐含的实际上 – samjaf

+0

也许我应该说*可能*污染实习生缓存(它真的取决于运行时)。无论如何,在内部循环中使用's + = q;'来进行'String'串联会产生大量无用的临时引用。 –

+0

谢谢你的澄清。 – samjaf

-1

它可以通过StringUtils.repeat

for (int j = v; j <= w; j++) { 
    list.add(StringUtils.repeat("q", j)); 
} 

还有一个使用原生Android代码,并在同一行做它,而不是使用两个循环

for (int j = v; j <= w; j++) { 
    list.add(String.format(String.format("%%%ds", j), " ").replace(" ","q")); 
} 
+0

负面投票的原因是什么? –

+1

我想这不能解决问题,并要求我们添加一个库来简化应该已经工作的代码。 – Tatarize

+1

可能是因为你没有解决问题。 OP说他的代码不起作用。你所做的是给他一个更好的方式去做他的代码已经做的事情。但是如果他的代码不工作,这不会解决它。所以你几乎回答了错误的问题。我不是downvoter,但我猜这就是为什么。 – ajb

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

为什么javascript? –

+1

只是将整数转换为变量,并在那里输入相同的函数。只有JS小提琴,不知道你可以做任何快速runnable片段以外的JavaScript。但是,你可以看到这个功能是一样的。产出是预期的。 – Tatarize

+0

我可以阅读的JavaScript就好 - 但我一直得到一个,aa,aaa,aaaa –

0

解决 - 问题是提供关于v &W¯¯不当值。感谢所有回答或贡献的人,我将为未来保留这些新技术。

相关问题