2019-11-20, 18:06
  #3457
Medlem
Citat:
Ursprungligen postat av Proton
if-else gör precis vad det låter som.

om villkoret är uppfyllt, gör detta, annars gör detta. Plain and simple.

Det finns två möjligheter egentligen, utan att ha sett din kod som den ser ut nu: antingen har du duplicerade utskrifter i de bägge fallen, dvs både i if-blocket och i else-blocket skriver du ut samma saker, fast den ena är knasig, alternativt att du skriver ut nåt oavsett utkomsten av if-else-grejjerna.

Hur ser den kod du försöker köra ut nu?
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string Förnamn, Efternamn, Fulltnamn;

            Console.Write("Förnamn: ");
            Förnamn = Console.ReadLine();

            Console.Write("Efternamn: ");
            Efternamn = Console.ReadLine();

            Fulltnamn = Förnamn + " " + Efternamn;

            Console.Write("Ålder: ");
            int num = Convert.ToInt32(Console.ReadLine());                        //Gör om en string till integer så vi kan göra beräkningar


            Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            Console.ReadLine();

            if (num < 65) 
            {
            Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            }
            else if (num >= 65)
            {
            
            Console.WriteLine("Du har redan gått i pension");
            Console.ReadKey();
            }
            
        }
    }
}
Citera
2019-11-20, 18:33
  #3458
Moderator
Protons avatar
Citat:
Ursprungligen postat av Oleggg
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string Förnamn, Efternamn, Fulltnamn;

            Console.Write("Förnamn: ");
            Förnamn = Console.ReadLine();

            Console.Write("Efternamn: ");
            Efternamn = Console.ReadLine();

            Fulltnamn = Förnamn + " " + Efternamn;

            Console.Write("Ålder: ");
            int num = Convert.ToInt32(Console.ReadLine());                        //Gör om en string till integer så vi kan göra beräkningar


            Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            Console.ReadLine();

            if (num < 65) 
            {
            Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            }
            else if (num >= 65)
            {
            
            Console.WriteLine("Du har redan gått i pension");
            Console.ReadKey();
            }
            
        }
    }
}
else if är inte nödvändig där, tänk på vad du vill få gjort i ord istället så klarnar det ju. Dessutom har du, precis som jag misstänkte, en utskrift som ligger HELT UTANFÖR dina villkor och därför alltid kommer skrivas ut oavsett hur knasigt det än är. Läser du igenom koden högt hör du ju själv var problemet sitter:

läs in något i variabeln num
skriv ut du har 65 - num år kvar till pension <---WTF?!?
om ålder är mindre än 65
skriv ut du har 65-num år kvar till pension
annars om num är större än eller lika med 65
skriv ut du har redan gått i pension.

Här blir det ju knäppt, eftersom du ska skriva ut att man redan gått i pension om inte if-villkoret uppfylls, right? Alltså kommer du undan med en else där.
Citera
2019-11-20, 18:59
  #3459
Medlem
Citat:
Ursprungligen postat av Proton
else if är inte nödvändig där, tänk på vad du vill få gjort i ord istället så klarnar det ju. Dessutom har du, precis som jag misstänkte, en utskrift som ligger HELT UTANFÖR dina villkor och därför alltid kommer skrivas ut oavsett hur knasigt det än är. Läser du igenom koden högt hör du ju själv var problemet sitter:

läs in något i variabeln num
skriv ut du har 65 - num år kvar till pension <---WTF?!?
om ålder är mindre än 65
skriv ut du har 65-num år kvar till pension
annars om num är större än eller lika med 65
skriv ut du har redan gått i pension.

Här blir det ju knäppt, eftersom du ska skriva ut att man redan gått i pension om inte if-villkoret uppfylls, right? Alltså kommer du undan med en else där.
Det står still Proton. Vet inte vad som är fel, började här om dagen så jag kan inte tänka logiskt med programmet haha. 65-num blir ju det som är kvar tills man går i pension, 65 är ju pensionsåldern och num är åldern man anger, summan blir ju hur många år det är kvar tills pensionen. Om man anger ett nummer under 65 kommer det bli år kvar tills pension medans om numret är över har man redan gått i pension.
Citera
2019-11-20, 19:12
  #3460
Moderator
Protons avatar
Citat:
Ursprungligen postat av Oleggg
Det står still Proton. Vet inte vad som är fel, började här om dagen så jag kan inte tänka logiskt med programmet haha. 65-num blir ju det som är kvar tills man går i pension, 65 är ju pensionsåldern och num är åldern man anger, summan blir ju hur många år det är kvar tills pensionen. Om man anger ett nummer under 65 kommer det bli år kvar tills pension medans om numret är över har man redan gått i pension.
Står det still klartexten till trots är det dags att lägga uppgiften åt sidan för dagen och återkomma imorron när du läst igenom mitt inlägg igen.

Det står ju EXAKT på vilken rad saker och ting sker, vet inte hur mycket klarare än så det kan bli i ärlighetens namn.

Okej, vad sägs om denna då. Kolla på din kod, var finns dess< rader och vad gör dem?

Kod:
int num = Convert.ToInt32(Console.ReadLine());                        //Gör om en string till integer så vi kan göra beräkningar


            Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
Vad tror du du får för utskrift om du nu matar in 70 exempelvis?
Citera
2019-11-20, 20:19
  #3461
Medlem
Citat:
Ursprungligen postat av Proton
Står det still klartexten till trots är det dags att lägga uppgiften åt sidan för dagen och återkomma imorron när du läst igenom mitt inlägg igen.

Det står ju EXAKT på vilken rad saker och ting sker, vet inte hur mycket klarare än så det kan bli i ärlighetens namn.

Okej, vad sägs om denna då. Kolla på din kod, var finns dess< rader och vad gör dem?

Kod:
int num = Convert.ToInt32(Console.ReadLine());                        //Gör om en string till integer så vi kan göra beräkningar


            int num = Convert.ToInt32(Console.ReadLine());
Vad tror du du får för utskrift om du nu matar in 70 exempelvis?
Jag får "Fullnamn , du har -5 år kvar till pension."
Kod:
int num = Convert.ToInt32(Console.ReadLine());
Gör så att det som matas in sparas i en variabel "num" som sedan används till att beräkna hur mycket det är kvar tills pensionen.
Kod:
Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
Citera
2019-11-20, 20:51
  #3462
Moderator
Protons avatar
Citat:
Ursprungligen postat av Oleggg
Jag får "Fullnamn , du har -5 år kvar till pension."
Kod:
int num = Convert.ToInt32(Console.ReadLine());
Gör så att det som matas in sparas i en variabel "num" som sedan används till att beräkna hur mycket det är kvar tills pensionen.
Kod:
Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
Ja det är ju rätt.

Nu är ju frågan varför du skriver ut det innan du har gjort dina kontroller på vad du ska skriva ut.

Varför gör du det?
Citera
2019-11-20, 20:59
  #3463
Medlem
Citat:
Ursprungligen postat av Proton
Ja det är ju rätt.

Nu är ju frågan varför du skriver ut det innan du har gjort dina kontroller på vad du ska skriva ut.

Varför gör du det?
Oj då det får jag ändra
Citera
2019-11-20, 21:07
  #3464
Moderator
Protons avatar
Citat:
Ursprungligen postat av Oleggg
Oj då det får jag ändra
Kolla nu igenom mitt inlägg några rader längre upp där det står en utskrift med ett WTF efter, varför tror du det står som det gör där?
Citera
2019-11-20, 21:47
  #3465
Medlem
Citat:
Ursprungligen postat av Proton
skriv ut du har 65 - num år kvar till pension <---WTF?!?
Jag är med, jag tog bort de då det redan stod efter if, det gjorde ingen nytta att stå två gånger om.

Nu ser programmet ut såhär
Kod:
string Förnamn, Efternamn, Fulltnamn;

            Console.Write("Förnamn: ");
            Förnamn = Console.ReadLine();

            Console.Write("Efternamn: ");
            Efternamn = Console.ReadLine();

            Fulltnamn = Förnamn + " " + Efternamn;

            Console.Write("Ålder: ");
            int num = Convert.ToInt32(Console.ReadLine());

            if ((65-num) < 65)
            {
             Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            }
            else if (num >= 65)
            {
             Console.WriteLine("Du har redan gått i pension");
            }
            Console.ReadKey();
Citera
2019-11-20, 21:56
  #3466
Medlem
Jag tror det är ordnat nu, det verkar så.

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pension2
{
    class Program
    {
        static void Main(string[] args)
        {

            string Förnamn, Efternamn, Fulltnamn;

            Console.Write("Förnamn: ");
            Förnamn = Console.ReadLine();

            Console.Write("Efternamn: ");
            Efternamn = Console.ReadLine();

            Fulltnamn = Förnamn + " " + Efternamn;

            Console.Write("Ålder: ");
            int num = Convert.ToInt32(Console.ReadLine());

            if (num < 65)
            {
             Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            }
            else
            {
             Console.WriteLine("Du har redan gått i pension");
            }
            Console.ReadKey();

        }
    }
}
Citera
2019-11-21, 06:42
  #3467
Moderator
Protons avatar
Citat:
Ursprungligen postat av Oleggg
Jag tror det är ordnat nu, det verkar så.

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pension2
{
    class Program
    {
        static void Main(string[] args)
        {

            string Förnamn, Efternamn, Fulltnamn;

            Console.Write("Förnamn: ");
            Förnamn = Console.ReadLine();

            Console.Write("Efternamn: ");
            Efternamn = Console.ReadLine();

            Fulltnamn = Förnamn + " " + Efternamn;

            Console.Write("Ålder: ");
            int num = Convert.ToInt32(Console.ReadLine());

            if (num < 65)
            {
             Console.Write(Fulltnamn + ", du har " + (65 - num) + " år kvar till pension.");
            }
            else
            {
             Console.WriteLine("Du har redan gått i pension");
            }
            Console.ReadKey();

        }
    }
}
Det där tycker jag med ser betydligt rimligare ut.

Några hintar om hur du gör för att ta dig vidare:
Tycker du ditt program gör konstiga saker, skriv ner i klartext vad ditt program gör på varje rad. Då kommer du kunna hitta utskrifter som inte är på rätt plats enklare.

Beträffande villkor så är det i ditt fall troligen enklare om du återigen formulerar högt vad det är då vill ska inträffa, typ såhär:

"Om åldern är mindre än 65 ska något skrivas ut
Om åldern är lika med 65 ska något annat skrivas ut.
I alla andra fall ska något tredje skrivas ut"

I ovanstående har du ju täckt in alla fallen för vad du vill ska inträffa, har du det klart för dig innan du kastar dig över tangenterna är det troligen enklare för dig att få till det utan allt för mycket krångel.
Citera
2019-11-21, 23:17
  #3468
Medlem
Citat:
Ursprungligen postat av Proton
Det där tycker jag med ser betydligt rimligare ut.

Några hintar om hur du gör för att ta dig vidare:
Tycker du ditt program gör konstiga saker, skriv ner i klartext vad ditt program gör på varje rad. Då kommer du kunna hitta utskrifter som inte är på rätt plats enklare.

Beträffande villkor så är det i ditt fall troligen enklare om du återigen formulerar högt vad det är då vill ska inträffa, typ såhär:

"Om åldern är mindre än 65 ska något skrivas ut
Om åldern är lika med 65 ska något annat skrivas ut.
I alla andra fall ska något tredje skrivas ut"

I ovanstående har du ju täckt in alla fallen för vad du vill ska inträffa, har du det klart för dig innan du kastar dig över tangenterna är det troligen enklare för dig att få till det utan allt för mycket krångel.
Absolut, blir faktiskt lättare när man verkligen skriver ner rad för rad vad man vill åstadkomma! tack så jätte mycket för hjälpen !
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in