Villkorsoperatorn ? : Uppgift
Gör ett program som frågar efter ditt kön och som ger svarsalternativen m och k. Därefter ska utskriften bli: "Du är en man" eller "Du är en kvinna", beroende på om du matat in ett 'm' eller inte. Använd villkorsoperatorn i ditt program.
Fungerar inte hur villkorsoperatorn fungerar så behöver hjälp med denna uppgift. Hittills har jag skrivit detta:
Console.WriteLine ("Kön (m/k): ");
string kön = Console.ReadLine();
kön = m ? m : k;
}
Jag vet hur if-satser fungerar, men hur implementerar man samma system i villkoroperator? Har försökt läsa i boken men förstår ingenting.
Operatorn fungerar så här.
Jämför satsen if .. else ..
Vilket cis-perspektiv!
Prova att skriva fungerande kod med if-then-else först så kan vi konvertera den till villkorsoperatorn.
Yngve skrev:Operatorn fungerar så här.
Jämför satsen if .. else ..
Jag förstår nu i princip hur den fungerar nu. Men hur ska jag formulera koden? Jag tänker att detta borde fungera:
Console.WriteLine ("Kön (m/k): ");
string kön = Console.ReadLine();
m = ? m : k;
}
}
dvs. om m = true så är det m, och om m = false så är det k.
Syntaxen är fel, det ska vara
condition ? consequent : alternative
Till exempel:
max = (a>b) ? a : b
"Översatt":
if (a>b) { max = a } else { max = b }
m = ? m : k;
är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition
) behöver skrivas.
condition ? consequent : alternative
Se exempel i Microsofts dokumentation.
Visa spoiler
{
Console.Write("Kön (m/k): ");
string val = Console.ReadLine();
string kön = (val == "m") ? "man" : "kvinna";
Console.WriteLine("Du är en {0}.", kön);
}
Lindehaven skrev:
m = ? m : k;
är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition
) behöver skrivas.condition ? consequent : alternative
Se exempel i Microsofts dokumentation.
Visa spoiler
{ Console.Write("Kön (m/k): "); string val = Console.ReadLine(); string kön = (val == "m") ? "man" : "kvinna"; Console.WriteLine("Du är en {0}.", kön); }
Får följande error när jag skriver denna kod: https://prnt.sc/wmt7fs
MainClass saknar avslutande måsvinge-parentes "}"
Du vet väl att du kan klistra in bilder direkt här i kommentarer?
Farbrorgul skrev:Lindehaven skrev:
m = ? m : k;
är inkorrekt vilket du ser direkt om du kompilerar koden. Variabeln m behöver deklareras. Ett villkor (condition
) behöver skrivas.condition ? consequent : alternative
Se exempel i Microsofts dokumentation.
Visa spoiler
{ Console.Write("Kön (m/k): "); string val = Console.ReadLine(); string kön = (val == "m") ? "man" : "kvinna"; Console.WriteLine("Du är en {0}.", kön); }
Får följande error när jag skriver denna kod: https://prnt.sc/wmt7fs
Tips: Läs felmeddelandena, de kan ge mycket information om man lär sig tolka dem. I det här fallet fick du felmeddelandet "Unexpected symbol `end-of-file`", vilket innebär att filen slutade tidigare än väntat - det vill säga att kompilatorn förväntade sig mer kod innan filen skulle ta slut. Det kan ge dig en ledtråd om att du bör kolla så att alla block avslutas korrekt, alltså att det för varje måsvinge finns en motsvarande avslutande måsvinge.