Avatar billede alex_sleiborg Nybegynder
06. juli 2005 - 14:13 Der er 5 kommentarer og
1 løsning

Catch Undtagelseshåndtering

Jeg er nybegynder i C#. Så jeg er lige igang med og lave et lille program i konsolen, der kan regne noget geometri ud.

Jeg kan godt få try og catch til og virke. Men jeg vil gerne have hvis man trykker nogle tegn ind i en int, at så skal man indtaste igen i stedet for at den bare ingorere det eller skriver en fejl meddellelse. Her er min kode

using System;

public class Geometri
{
   
    public static byte Figur;
   
    public void Udskriv_StartTekst()//Metoden indeholder start teksten, der kommer når programmet starter
    {
            Console.WriteLine("\nVelkommen til Geometri Udregneren..!\n");
            Console.WriteLine("------------------------------------");
            Console.WriteLine("Programmet er skrevet i C#");
            Console.WriteLine("------------------------------------\n\n");
            Console.WriteLine("Vælg hvilket element du vil have udregnet\n");
            Console.WriteLine("1. Kvadrat");
            Console.WriteLine("2. Rektangel");
            Console.WriteLine("3. Trekant");
            Console.WriteLine("4. Parallelogram");
            Console.WriteLine("5. Trapez");
            Console.WriteLine("6. Cirkel\n");
       
    }

    public void Tjek()//Metode der skal tjekke om man skriver et tal imellem 1 og 6.
    {
        if(Geometri.Figur >= 7)
        {
            Console.WriteLine("Du skal vælge et tal imellem 1-6\n");
        }   
        try
        {
        Geometri.Figur = byte.Parse(Console.ReadLine());
        }
        catch
        {
            Console.WriteLine("Dit tal skal være imellem 1-6\n");
        }
    }   
}

public class Geometri_Main
{
    static void Main()
    {
    Geometri Geo = new Geometri();
    Geo.Udskriv_StartTekst();
    Geo.Tjek();
    }
}
Avatar billede arne_v Ekspert
06. juli 2005 - 14:19 #1
prøv:

public void Tjek()//Metode der skal tjekke om man skriver et tal imellem 1 og 6.
{
    bool done = false;
    do
    {
        if(Geometri.Figur >= 7)
        {
            Console.WriteLine("Du skal vælge et tal imellem 1-6\n");
        } 
        try
        {
        Geometri.Figur = byte.Parse(Console.ReadLine());
        done = true;
        }
        catch
        {
            Console.WriteLine("Dit tal skal være imellem 1-6\n");
        }
    }   
  while(!done);
}
Avatar billede alex_sleiborg Nybegynder
06. juli 2005 - 14:19 #2
Jeg har prøvet og bruge goto, men får bare kompiler fejl. Det skal være sådan hvis man indtaster noget andet en et tal imellem 1-7, skal den skrive det er ugyldigt prøv igen
Avatar billede arne_v Ekspert
06. juli 2005 - 14:21 #3
public void Tjek()//Metode der skal tjekke om man skriver et tal imellem 1 og 6.
{
    bool done = false;
    do
    {
        try
        {
        Geometri.Figur = byte.Parse(Console.ReadLine());
        if(Geometri.Figur < 7 || Geometri.Figur > 7)
        {
            done = true;
        }
        else
        {
            Console.WriteLine("Du skal vælge et tal imellem 1-6\n");
        }
        }
        catch
        {
            Console.WriteLine("Dit tal skal være imellem 1-6\n");
        }
    } 
  while(!done);
}
Avatar billede arne_v Ekspert
06. juli 2005 - 14:23 #4
prøver igen:

public void Tjek()//Metode der skal tjekke om man skriver et tal imellem 1 og 6.
{
    bool done = false;
    do
    {
        try
        {
            Geometri.Figur = byte.Parse(Console.ReadLine());
            if(Geometri.Figur < 1 || Geometri.Figur > 6)
            {
                done = true;
            }
            else
            {
                Console.WriteLine("Du skal vælge et tal imellem 1-6\n");
            }
        }
        catch
        {
            Console.WriteLine("Dit tal skal være imellem 1-6\n");
        }
    }
  while(!done);
}
Avatar billede alex_sleiborg Nybegynder
06. juli 2005 - 14:27 #5
bool done = false;
            do
            {
                try
                {
                    Geometri.Figur = byte.Parse(Console.ReadLine());
                    if(Geometri.Figur < 7 )
                    {
                        done = true;
                    }
                    else
                    {
                    Console.WriteLine("Du skal vælge et tal imellem 1-6\n");
                    }
                }
                catch
                {
                    Console.WriteLine("Dit tal skal være imellem 1-6\n");
                }
            } 
                while(!done);

Den her virker:D

Rigtig mange tak:D

Smid et svar
Avatar billede arne_v Ekspert
06. juli 2005 - 14:30 #6
ja - jeg fik vist vendt testet forkert - sorry

og svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester