Permalänk
Medlem

Hjälp med ett problem C#

Tjenare, sitter på sista uppgiften på min distanskurs med frågan:

I denna uppgift ska du skapa ett komplett program.
(Du behöver bara skriva Main-metoden och eventuella metoder du anropar)
Programmet ska fråga användaren efter 20 heltal.
Frågorna ska ställas i en loop.
Talen ska sparas undan i en vektor.
Loopa sen genom vektorn för att hitta det största talet.
Skriv därefter ut det största talet.

Har kommit fram till denna koden, och får ett felmeddelande som säger att "indatasträngen hade ett felaktigt format". Läst omkring på msdn (dit jag blivit dirigerad av felmeddelandet) men förstår fortfarande inte.

Finns det någon som skulle kunna visa mig i rätt riktning?

Visa signatur

-

Permalänk
Medlem

Vad skiver du in för input?
Har du testat att skriva ett tal sen trycka enter. Sedan göra om detta 19 gånger till?

Permalänk
Medlem

Testade att köra koden, den fungerar för mig.

Dold text
Visa signatur

CPU : 12900KS GPU : 3090 Strix OC RAM : G.Skill 32GB 6600MHz 34-40-40-105SSD : 2st SN850 1TB Bildskärm 1: Strix PG279Q 1440p@165Hz G-SYNC Bildskärm 2: Asus VG27AQ 27" 1440p@165Hz Bildskärm 3: Asus VG27AQ 27" 1440p@165Hz Vattenkylning CPU,GPU och RAM, 3*360 rad

Permalänk
Medlem

Precis som Tino skrev så behöver vi veta vad du matar in.

Istället för att göra en For-loop i första läget kan du göra en While(myList.Length < 20). Sedan kan du göra en tryparse istället och kolla så att den verkligen fungerar. Då kan man mata in skräp och ändå fortsätta tills man matat in 20 riktiga nummer.

Visa signatur

/Trixter
ASUS P5Q-Pro || Q9550 @ 3,2 Ghz || 4x1024 MB Corsair TWIN2X 6400C5 || HD4850 @ 720/1150mhz || 500Gb Seagate || Corsair 620HX ||Antec P182||Windows Vista Home Premium SP1 64bit||Logitech MX518||Sidewinder X6

Permalänk
Medlem
Skrivet av Tino:

Vad skiver du in för input?
Har du testat att skriva ett tal sen trycka enter. Sedan göra om detta 19 gånger till?

Skrivet av Trixter:

Precis som Tino skrev så behöver vi veta vad du matar in.

Istället för att göra en For-loop i första läget kan du göra en While(myList.Length < 20). Sedan kan du göra en tryparse istället och kolla så att den verkligen fungerar. Då kan man mata in skräp och ändå fortsätta tills man matat in 20 riktiga nummer.

Skriver in "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" osv fram till 20 i en enda rad. Har inte testat att skriva det 20 gånger dock, så får göra det.

Skrivet av Boozfob:

Testade att köra koden, den fungerar för mig.

Hm, läraren säger att det inte fungerar och att det bara är "ett litet fel" just där jag la kommentaren...

Visa signatur

-

Permalänk
Medlem
Skrivet av Ecual:

Skriver in "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" osv fram till 20 i en enda rad. Har inte testat att skriva det 20 gånger dock, så får göra det.

Hm, läraren säger att det inte fungerar och att det bara är "ett litet fel" just där jag la kommentaren...

Eftersom du kör en forloop där du sedan sätter talen i en INT måste det endast vara heltal i sifferform, dvs. kan den inte ta emot kommatecken(","). Finns lite beskrivning av INT här: https://sv.wikipedia.org/wiki/Integer
Loopen körs även tills du har slagit in tal 20 gånger, och därför skulle det i vilket fall som helst inte fungera om du skrev 1,2,3,4, osv.

Visa signatur

Kom ihåg att ALLTID citera mig om du vill ha svar!

|CPU: Intel Core i7 4790K Kyld av: Corsair H80 GPU: ASUS GTX 970 4GB Chassi: Phanteks Enthoo Evolv MOBO: MSI Z97M Gaming Nätagg: XFX 750W Silver SSD: Kingston 120GB SSDNow V300 HDD: Samsung Spinpoint F3 1TB 7200RPM + 1TB|

Permalänk
Medlem
Skrivet av FobbanN:

Eftersom du kör en forloop där du sedan sätter talen i en INT måste det endast vara heltal i sifferform, dvs. kan den inte ta emot kommatecken(","). Finns lite beskrivning av INT här: https://sv.wikipedia.org/wiki/Integer
Loopen körs även tills du har slagit in tal 20 gånger, och därför skulle det i vilket fall som helst inte fungera om du skrev 1,2,3,4, osv.

Ah! Då hänger jag med, tackar!

Visa signatur

-

Permalänk
Medlem

Som tidigare svar pekat ut så ligger en del utav felet i att du kräver ett korrekt svar, något som int.Parse kan hantera.
Man kan gå runt det med try och catch etc men TryParse är bättre på flera sätt.

Personligen skulle även jag precis som Trixten förslagit använt en while loop. Något i stil med

int Result;
while (myList.Count < 20)
{
Console.WriteLine("Skriv in " + (20 -myList.Count) +" heltal till");
while (!(int.TryParse(Console.ReadLine(), out Result))) ;
myList.Add(Result);
}

Dold text

Om läraren vill att man ska mata in heltalen i stil med "1, 2, 3, 4, 5" så får man göra lite annorlunda, men jag antar att han inte ämnar det då han sger att det bara är ett litet fel