4 svar
1292 visningar
Toman behöver inte mer hjälp
Toman 5 – Fd. Medlem
Postad: 31 aug 2020 11:29

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();

Laguna Online 30482
Postad: 31 aug 2020 12:14

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. 

Yngve 40279 – Livehjälpare
Postad: 31 aug 2020 12:26

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.

Toman 5 – Fd. Medlem
Postad: 31 aug 2020 12:48 Redigerad: 31 aug 2020 13:02

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å?

Yngve 40279 – Livehjälpare
Postad: 31 aug 2020 12:52 Redigerad: 31 aug 2020 12:54

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!");

Svara
Close