Hemligt tal - If-else satsen funkar inte!
Jag kan för vad allt jag är värd inte lista ut vad som är fel!
Uppgiften är att vi skall skapa ett enkelt program där användaren skall gissa en siffra 1-100 som programmet har slumpat fram. Allt funkar som det skall i början, det går att mata in en gissning, programmet säger om man skall gissa högre eller lägre men när man gissar rätt står det ingenting?
Så här ser min kod ut, har försökt ändra runt bland else och if men förstår inte varför den inte bara skriver ut min console.writeline när påståendet stämmer?
Så här ser min kod ut, vart har det gått fel?
{
Console.WriteLine("GISSA DET HEMLIGA TALET"); //Rubrik
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
Console.WriteLine("Gissa på ett tal mellan 1-100"); // Här gissar användaren på sitt tal
string str = Console.ReadLine();
int tal = Convert.ToInt32(str); //Omvandlar string som användaren skriver till en int
while (tal != slump_tal) //så länge som det gisssade talet är skillt från slump talet vill jag att while skall köra en loop
{
if (tal < slump_tal)
{
Console.WriteLine("Gissa på ett högre tal"); //om talet är lägre än slump talet skrivs detta ut som hjälp
str = Console.ReadLine(); //Vi lägger till så att det inmatade talet skrivs ut
tal = Convert.ToInt32(str); // och här gör vi om string till en int för att det skall passa i påståendet
}
else if (tal > slump_tal)
{
Console.WriteLine("Gissa på ett lägre tal");
str = Console.ReadLine();
tal = Convert.ToInt32(str);
}
}
if (tal == slump_tal)
{
Console.WriteLine("GRATTIS, Du gissade rätt!");
}
Console.ReadLine();
Koden ser bra ut. En möjlighet är att du ändrar i ett program men kör ett annat. Stoppa in en utskrift precis före den sista if-satsen och kolla.
Hej och välkommen till Pluggakuten!
Håller med Laguna, jag ser ingen anledning till att det inte skulle fungera.
Tänkte först att det kanske hade med heltalsrepresentation att göra och att jämförelserna < och > fungerade men att likhetsoperatorn == inte funkar, men det vore konstigt eftersom båda variablerna är av typen int.
==========
Kommentar, du behöver egentligen inte ha kontrollen
if (tal == slump_tal)
eftersom om du kommer dit i koden så är tal varken större än eller mindre än slump_tal och måste alltså vara lika.
Gud, såg nu att långt, långt ner låg det en liten felaktigt "{" som förstörde allt, nu funkar de som de ska tack för hjälpen ändå!
En liten fundering bara, när jag tar bort (tal == slump_tal) efter if så får jag ett fel där de ber mig skriva in en parentes, vad beror detta på?
Om du har kvar ordet if så måste det följas av ett villkor.
Jag menade att du kunde ta bort hela den raden.
Byt alktså ut
if (tal == slump_tal)
{
Console.WriteLine("GRATTIS, Du gissade rätt!");}
mot
Console.WriteLine("GRATTIS, Du gissade rätt!");