Hur skriver jag en For-loop?
Hej!
Jag försöker skriva ett program där användaren ska välja hur många tal som ska skrivas in och sedan ska talen summeras.
Jag har provat på alla möjliga sätt i två dagar nu men jag har fastnat totalt!
Vad är det jag missar?
Varför loopar det inte?
Summan blir antingen bara "0" eller så blir det siffran som jag skrev in.
Här är koden jag har än så länge:
static void Main(string[] args)
{
Console.WriteLine("Hur många tal vill du skriva in?");
Int32.TryParse(Console.ReadLine(), out int antal);
List<int> sifferlista = new List<int>();
int summa = 0;
for (int i = 0; i < 0; i++)
{
Console.WriteLine(sifferlista[i]);
}
Console.WriteLine("Skriv in ett tal:");
Int32.TryParse(Console.ReadLine(), out int result);
sifferlista.Add(result);
foreach (int nummer in sifferlista)
{
summa += nummer;
}
Console.WriteLine("Summan av alla tal blir: " + summa);
Console.ReadLine();
Finns det någon där ute som kan hjälpa mig att få polletten att trilla ner?
Tack!
for (int i = 0; i < 0; i++) innebär att i initieras med värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden.
Vad skulle den första loopen skriva ut? Det finns ju ingenting i sifferlista ännu.
”I det här programmet ska användaren först få skriva in ett tal. Det här talet ska användas för att avgöra hur många tal användaren vill spara. När vi har sparat så många tal ska vi summera alla talen. Så det här är stegen programmet ska följa, i ordning;
Användaren väljer hur många tal de vill spara
Användaren får skriva in så många tal som de har valt.
Vi summerar alla inskrivna tal.
Vi presenterar summan.”
CurtJ skrev:for (int i = 0; i < 0; i++) innebär att i initieras med värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden.
Okej, så vad behöver jag göra?
Laguna skrev:Vad skulle den första loopen skriva ut? Det finns ju ingenting i sifferlista ännu.
Aha, vad är det jag ska skriva där?
1. Användaren väljer hur många tal de vill spara
2. Användaren får skriva in så många tal som de har valt.
3. Vi summerar alla inskrivna tal.
4. Vi presenterar summan.”
1 gör du. 3 gör du och 4 också. Men 2 ska du göra lika många gånger som variabeln antal anger, så du behöver en loop. Just nu läser du alltid bara in ett tal.
tjejkod skrev:CurtJ skrev:for (int i = 0; i < 0; i++) innebär att i initieras med värdet 0 och sen exekverar forloopen så länge som villkoret i<0 int är uppfyllt och det är inte uppfyllt initialt så därför exekverar inte den koden.
Okej, så vad behöver jag göra?
Du ska läsa vad Laguna skriver längst ner (#7) och försöka själv så hjälper vi dig. Det är inte meningsfullt om vi skriver koden åt dig du du inte lär dig något av det. Det är egen erfarenhet du lär dig av.
Som svar på grundfrågan (din titel) så skriver du en for-loop som jag antyder ovan. De tre elementen som åtskiljs av semikolon är som följer
första elementet initierar en loop-variabel (i i det här fallet)
andra elementet är ett villkor som anger att loopen ska exekvera ett varv till så länge villkoret är sant
tredje elementet är kod som exekveras varje loop och det används i regel för att räkna upp loopvariabeln som här
ex:
for (int i = 0; i < 5; i++) {
...kod
}
innebär att koden mellan måsvingarna exekveras 5 gånger. Första varvet är i=0 och villkoret (i<5) är sant. Nästa varv har i räknats upp med 1 (i++) och då är i=1 och villkoret är fortfarande uppfyllt. Det pågår tills i är uppräknat till 5 och då villkoret inte är uppfyllt längre så slutar loopen att exekvera och exekveringen fortsätter efter avslutande måsvinge.
Laguna skrev:1. Användaren väljer hur många tal de vill spara
2. Användaren får skriva in så många tal som de har valt.
3. Vi summerar alla inskrivna tal.
4. Vi presenterar summan.”1 gör du. 3 gör du och 4 också. Men 2 ska du göra lika många gånger som variabeln antal anger, så du behöver en loop. Just nu läser du alltid bara in ett tal.
Okej tack!
Jag har NÄSTAN löst det.
Men nu när jag skrev in siffran 3 tex, så fick jag endast skriva in 2 tal sedan summerade programmet det.
Så här ser min kod ut nu:
static void Main(string[] args)
{
Console.WriteLine("Hur många tal vill du skriva in?");
Int32.TryParse(Console.ReadLine(), out int antal);
List<int> sifferLista = new List<int>();
for (int i = 0; i <2; i++)
{
Console.WriteLine("Skriv in ett tal:");
Int32.TryParse(Console.ReadLine(), out int result);
sifferLista.Add(result);
}
int summa = 0;
foreach (int nummer in sifferLista)
{ summa += nummer;
}
Console.WriteLine("Summan av alla tal blir:" + summa);
Console.ReadLine();
for (int i = 0; i <2; i++)
Du måste tala om för programmet hur många varv det ska snurra runt.
Det ska det vara beroende på vad användaren matar in för värde.
Just nu går det alltid bara två ggr oberoende av vad användaren skriver in. (för i = 0 och 1)
Tack! Nu kom jag äntligen på det :) Vilken skön känsla.