Avatar billede madsleejensen Nybegynder
20. juni 2007 - 15:31 Der er 2 kommentarer og
1 løsning

problemmer med klasse script

Hej jeg sidder lige og prøver at strikke noget af alt det sammen jeg har læst omkring

men kan ikke helt forstå hvad gør jeg galt i dette script?

    public abstract class shape : IComparable
    {
        public double Area;

        public int CompareTo(object o)
        {
            shape temp = (shape)o;

            return temp.Area.CompareTo(Area);
        }

        public abstract void GetArea();
    }

    public class circle : shape
    {
        const double PI = 3.14;
        private int radius;
        public circle( int radius )
        {
            this.radius = radius;
            this.GetArea();
        }
        public override void GetArea()
        {
            Area = (radius * 2) * PI;
        }
    }

    public class square : shape
    {
        private int width;
        private int height;

        public square(int w, int h)
        {
            this.width = w;
            this.height = h;
            this.GetArea();
        }
        public override void GetArea()
        {
            Area = this.width * this.height;
        }
    }

    class Program
    { 
        static void Main(string[] args)
        { 
            shape[] circles = new shape[10];

            circles[0] = new circle(10);
            circles[1] = new circle(14);
            circles[2] = new circle(40);
            circles[3] = new circle(20);   
            circles[4] = new circle(30);
           
            Array.Sort(circles);
            display(circles);

            Console.Read();
        }

        static void display(shape[] shapes)
        {
            for (int i = 0; i < shapes.Length; i++)
            {
                Console.Write(shapes[i].Area);
            }
        }
    }

den skriver at i min Console.Write(shapes[i].Area);

Objektreferencen er ikke indstillet til en forekomst af et objekt.

det jeg prøver at lave er 2 klasser circle / square som begge har GetArea() som smider en double Area value og så vil jeg gerne kunne oprette circles / squares og senere lave en Array.Sort() på dem
Avatar billede hmortensen Nybegynder
20. juni 2007 - 16:54 #1
Du afsætter 10 pladser i arrayet, og derfor fejler det, da det vil forsøge at løbe alle 10 entries igennem, men der er kun valid data i 5 af dem.

Du bør måske overveje at bruge en generisk liste.
Avatar billede madsleejensen Nybegynder
20. juni 2007 - 20:08 #2
ahh selvfølgelig !!! smid et svar :) og mange tak
Avatar billede hmortensen Nybegynder
20. juni 2007 - 20:34 #3
Det var så lidt.
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