2016-04-19 16 views
4

Gibt es eine einfache Methode mit einer Schleife, die ich verwenden könnte, um durch beide Arrays auf einmal zu gehen? Ich arbeite seit Tagen daran, und ich habe das Gefühl, dass es viel einfacher ist, als ich es mache.C# einfache Schleife Arrayvariable zuweisen

So etwas wie ..

Während statsArray und perDayArray Indizes weniger sind als zehn, teilen statsArray [x] von Tagen und weisen perdayArray [x]

Außerdem haben die statsArray Indizes zuvor zugewiesen wurde, durch Textfelder.

private double CalculatePerDay(double stats, int days) 
    { 
     return stats/days; 
    } 

     perDayArray[0] = CalculatePerDay(statsArray[0], daysPassed); 
     perDayArray[1] = CalculatePerDay(statsArray[1], daysPassed); 
     perDayArray[2] = CalculatePerDay(statsArray[2], daysPassed); 
     perDayArray[3] = CalculatePerDay(statsArray[3], daysPassed); 
     perDayArray[4] = CalculatePerDay(statsArray[4], daysPassed); 
     perDayArray[5] = CalculatePerDay(statsArray[5], daysPassed); 
     perDayArray[6] = CalculatePerDay(statsArray[6], daysPassed); 
     perDayArray[7] = CalculatePerDay(statsArray[7], daysPassed); 
     perDayArray[8] = CalculatePerDay(statsArray[8], daysPassed); 
     perDayArray[9] = CalculatePerDay(statsArray[9], daysPassed); 
     perDayArray[10] = CalculatePerDay(statsArray[10], daysPassed); 
+0

Werden sie immer die gleiche Anzahl von Elementen enthalten? –

Antwort

8
for (int i = 0; i < perDayArray.Length; i++) 
{ 
    perDayArray[i] = CalculatePerDay(statsArray[i], daysPassed); 
} 
+3

Warum nicht perDayArray.GetLength (0)? (oder perDayArray.GetUpperBound (0) - 1) –

+0

Ja, es wird noch besser. Danke @AlfieGoodacre –

+0

Das hat perfekt funktioniert. Ich habe das Gefühl, dass ich so viele verschiedene Möglichkeiten ausprobiert habe und das war einer von ihnen. Muss irgendwo was vermasselt haben. Danke Roma. – Airvvic

8

Sie könnten Linq verwenden wie folgt

perDayArray = statsArray.Select(a => CalculatePerDay(a, daysPassed)).ToArray(); 
+0

@Fabjan - Ich denke, es als eine Funktion zu verlassen ist besser, weil 1. Es ist klarer, was die Berechnung macht und 2. Es gibt Raum in der Zukunft, um die Funktion zu erweitern. – Icemanind

+0

Ihre Lösung ist gut, aber er fragt nach einer Schleife) –

2

Ich glaube, Sie wollen, dies zu tun:

for(int i=0; i<= 10; i++) 
{ 
    perDayArray[i] = CalculatePerDay(statsArray[i], daysPassed); 
}