2016-04-19 30 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¯¯不當值。感謝所有回答或貢獻的人,我將爲未來保留這些新技術。

相關問題