9 svar
69 visningar
Farbrorgul är nöjd med hjälpen
Farbrorgul 225
Postad: 13 jan 2021

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!

Laguna 12684
Postad: 13 jan 2021

Prova att skriva fungerande kod med if-then-else först så kan vi konvertera den till villkorsoperatorn.

Farbrorgul 225
Postad: 13 jan 2021 Redigerad: 13 jan 2021
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.

Yngve Online 19321 – Volontär digitala räknestugor
Postad: 13 jan 2021 Redigerad: 13 jan 2021

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);
    }
Farbrorgul 225
Postad: 13 jan 2021
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?

Tegelhus 201
Postad: 14 jan 2021
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.

Svara Avbryt
Close