Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Mar 2012

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?

-

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2002

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?

CPU: i7 6700k + Fractal Design S24 // GPU: EVGA GTX 980 Ti SC+ ACX 2.0+ // RAM: Kingston 16GB 2133MHz CL13 MoBo: MSI GAMING M7 // PSU: EVGA Supernova G2 850W, 80+ Gold // SSD: Samsung SM951 256GB M.2 NVMe + Samsung EVO 850 250GB M.2 // Chassi: Fractal Design S OS: W10 Pro // Skrämar: Acer XB270HU + 2x Dell U2412M
NAS: Synology DS415+ (3x WD RED 6 TB) // Konsol: Xbox One

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Jan 2011

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

Dold text

CPU : 6700K @ 4,7GHz GPU : Titan X (Pascal) RAM : 16GB 3600MHz 15-15-15-35 SSD : Samsung 950 PRO 512GB NVME Bildskärm 1: Strix PG279Q 1440p@165Hz G-SYNC Bildskärm 2: QNIX Q2710 1440p@60Hz

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Maj 2002

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.

/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

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Mar 2012
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...

-

Trädvy Permalänk
Medlem
Plats
Finspång
Registrerad
Jul 2010
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.

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|
Särskrivningar, felskrivningar och diverse grammatikfel kommer finnas i min text.

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Mar 2012
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!

-

Trädvy Permalänk
Medlem
Registrerad
Dec 2013

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