2017-09-22 19 views
0

我感興趣的是做這樣的事情(C#):使用循環在一行中設置int?

int sum = 0; 
for (int i = 0; i < 5; i++) 
    sum += i; 

但我想這樣做在同一行。例如:

int sum = (embedded loop) 

有沒有辦法在一行上做到這一點?我正在尋找應用這個更復雜的字符串操作算法,所以我不能簡單地用算術公式替換循環。

+1

有什麼原因嗎? – Amit

+7

Sum = n *(n + 1)/ 2 – TNguyen

+0

@ TPN1994有它的公式,它是*正確的解*,但你也可以做'var sum = Enumerable.Range(0,5).Sum() ;' –

回答

-1

退房Enumerable.Range

int sum = Enumerable.Range(1, 5)

+1

可能嘗試實際總結它。 –

0
int sum = 0; 
for(int i=0; i<5; sum+=i,++i){} 

試試這個

+0

順便說一句,這是一個重複的問題,因爲它已經在這裏指出:https://stackoverflow.com/questions/1232176/how-do-i-put-two-increment-statements-in-ac-for-loop – n4feng

+0

那'不是我所問的。這是兩條線。 –

+0

不錯,如果你只想要在範圍內看到,那麼你可以把它們放在1行。我不認爲C#可以在一個單獨的行中聲明一個循環範圍和一個超出範圍的變量。 – n4feng

2

所以要循環,並做一些一條線?

首先,將它寫入一行不會讓它運行得更快。你仍然會循環,你仍然會是O(n)。對於你的問題,你有特別的問題,你可以這樣做:

var sum = Enumerable.Range(0,5).Sum(); 

這基本上讓數字0,1,2 ...... 4的收集和總結他們。

更一般地說,既然你想做東西,你可以使用Aggregate函數。例如:

var str = Enumerable.Range(0,5).Aggregate("",(p,c) => p + c); // Note: not efficient at all 

將採取值0,1,... 4,做字符串連接與他們(使用一個字符串生成器效果會更好)給你的字符串

編輯:

我通過一個單詞列表嘗試循環,使每一個標題下,然後返回一個字符串[]它

加入(」「)。

在這種情況下,是這樣的:

var result = string.Join(" ", myListOfWords.Select(w => char.ToUpper(w[0]) + w.Substring(1))); 

應該正常工作。

+0

謝謝,這就是我一直在尋找的東西。我知道這聽起來很愚蠢,但這是一個挑戰,並不意味着高效。 –

1

如果你不介意「和」僅是在for循環,你可以做到這一點範圍:

for (int i = 0, sum = 0; i < 5; sum += i, ++i) { // do something }