' freak.no - sitter fast, c#
freak.no

freak.no (https://freak.no/forum/index.php)
-   Programmering (https://freak.no/forum/forumdisplay.php?f=49)
-   -   sitter fast, c# (https://freak.no/forum/showthread.php?t=299806)

oyvind_95 12. oktober 2017 18:47

sitter fast, c#
 
jeg skal lage en slags størrelse utregner, har to tekstbokser som skal plusses sammen og ut fra resultatet vil jeg at en tredje tekstboks skal gi en størrelse utifra om svaret er <> osv..jeg skal ha 5 forskjellige mulige svar. Nå sitter jeg helst fast, og det eneste jeg får til er at de første to tekstboksene plusses os svaret kommer i den tredje..
hvordan kan jeg få på en if her? noen tips.. er helt nybegynner i det her:\

steili 12. oktober 2017 18:52

Du får nok lettere hjelp her om du legger ved koden du har foreløpig. (bruk [code] [/ code]), og er litt mer spesifikk om hvilke problemer du har, feilmeldinger du får etc.

oyvind_95 12. oktober 2017 19:03

beklager, jeg er helt ny i dette og da er det ikke så lett og forklare..

Kode:

private void btnDiv_Click(object sender, EventArgs e)
{
      double numer1, numer2, results;
      number1 = Convert.ToDouble(txtNumber1.Text);
      number2 = Convert.ToDouble(txtNumer2.Text);
      results = numer1+number2;
      txtResult.Text = Convert.ToString(result);

jeg får ingen feilmelding på dette, men jeg ønsker og legge inn en if metode, da jeg ønsker at 1 av 5 mulige bokstaver skal komme som svar, ettersom summen av dette jeg har skrevet over..

Zepur 12. oktober 2017 20:21

Hva er det du vil ha i if-en?
Kode:

private void btnDiv_Click(object sender, EventArgs e)
{
  double numer1, numer2, results;
  number1 = Convert.ToDouble(txtNumber1.Text);
  number2 = Convert.ToDouble(txtNumer2.Text);
  results = numer1+number2;
  if (results < 10) {
    txtResult.Text = "L";
  } else {
    txtResult.Text = Convert.ToString(result);
  }
}

Du kan gjøre noe lignende som dette.

oyvind_95 12. oktober 2017 20:38

tusen tusen tusen takk for svar.
kan jeg ha begge disse under samme click event?
skal jeg sette dette over eller under det jeg har der fra før?
jeg har fem forskjellige if jeg skal ha med.. f.eks hvis summen blir mellom 0-50 så får jeg ut A og hvis den er fra 50-100 får jeg B osv..

Moff 12. oktober 2017 22:44

Dette kan helt fint være i samme click-event. Hensikten er at du erstatter den click-eventen du har fra før. Hvis du skal ha fem ulike conditions, så kan du bruke "else if".

Ut i fra den koden du har postet så kan vi se at du har opprettet en form som har 3 tekstbokser med disse navnene:
- txtNumber1
- txtNumer2 (ingen B her?)
- txtResult

Personlig så ville jeg ha lagt inn noe feilhåndtering for å hindre at programmet krasjer hvis du skriver inn noe som ikke er et tall i tekstboksene. Convert.ToDouble() vil feile hvis det havner vanlig tekst i boksene dine. Det vanligste måten å fange opp det på er å bruke en try/catch-statement. Du kan også gå over til å bruke en TryParse-metode (dette er sånn jeg pleier å gjøre det). Smak og behag.

I C# er det også vanlig å definere og assigne variabler i én statement. I koden din skriver du dette:
Kode:

double numer1, numer2, results;
number1 = Convert.ToDouble(txtNumber1.Text);
number2 = Convert.ToDouble(txtNumer2.Text);
results = numer1+number2;

Hvis du vil assigne i samme statement som du definerer, så skriver du slik:
Kode:

double number1 = Convert.ToDouble(txtNumber1.Text);
double number2 = Convert.ToDouble(txtNumer2.Text);
double results = numer1+number2;

Én linje kortere, og jeg synes dette formatet er lettere å lese.

Så til selve click-eventen din. Slik kan du sette det sammen:

Kode:

private void btnDiv_Click(object sender, EventArgs e)
{
  try
  {
    double a = Convert.ToDouble(txtNumber1.Text);
    double b = Convert.ToDouble(txtNumer2.Text);
    double c = a + b;
       
        if (c < 0) { // Mindre enn 0
      txtResult.Text = "???";
    } else if(c >= 0 && c < 50) { // Fra 0 til 49
      txtResult.Text = "A";
    } else if(c >= 50 && c < 100) { // Fra 50 til 99
      txtResult.Text = "B";
    } else { // Fra 100 og oppover
      txtResult.Text = "C";
    }
  }
  catch(Exception) // Du kan også hente exception-objektet ved å skrive "Exception e" her, men siden jeg ikke bruker "e" til noe har jeg utelatt det.
  {
    txtResult.Text = "Error!";
    return;
  }
}



Alle tidspunkt er GMT +2. Klokken er nå 14:51.