Kugel mittelpunkt setzen prob



  • Naja eine möglichkeit wäre :

    public void SetMitte(...)
    {
      Punkt p = new Punkt();
      p.mittelpunkt.a = 100;
    }
    

    Wie gesagt, es wäre besser wenn du erstmal was verstehst wie man objekte erzeugt und besonders warum man das macht.



  • ja jetzt ging es, nur jetzt bekomm ich beim kompilieren keinen Fehler mehr, aber beim ausführen folgendes...
    Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
    at aufgabe3.Kugel.SetMitte (Int32 mx, Int32 my, Int32 mz) [0x00000]
    at aufgabe3.Kugel.Main () [0x00000]



  • -.- Wie sieht denn dein Code nun aus?

    http://openbook.galileocomputing.de/csharp/ Attacke!



  • using System;
    namespace aufgabe3
    {
    class Kugel
      {
      public class Punkt
       {public int a;
        public int b;
        public int c;
    	public Punkt mittelpunkt;
       }
      public double radius;
    
      public void SetMitte (int mx, int my, int mz)
       {
       Punkt help= new Punkt();
       help.mittelpunkt.a=mx;
       help.mittelpunkt.b=my;
       help.mittelpunkt.c=mz;
       return;
       }
    
     public  void SetRadius (double r)
       {
       radius= r;
       return;
       }
    
      public double Oberflaeche()
       {double ofl;
       const double PI = 3.141592;
       ofl= 4.0*PI*radius*radius;
       return ofl;
       }
    
      public double Volumen()
       {double vol;
       const double PI = 3.141592;
       vol= 4.0/3 *PI*radius*radius*radius;
       return vol;
       }
    
      public static void Main ()
       {
       Kugel ball;
       ball = new Kugel();
       ball.SetMitte (1,2,3);
       ball.SetRadius (41.2); // in cm
       Console.WriteLine ("Oberflaeche des Balls: " + ball.Oberflaeche());
       Console.WriteLine ("Volumen des Balls: " + ball.Volumen());
       }
      }
    }
    


  • Hmm ist ja ganz klar, deine "mittelpunkt" REferenz ist nicht initialisiert.

    help.mittelpunkt = new Punkt();
    dann sollte es gehen. Aber du solltest das Design deiner klasse nochmal überdenken.



  • aja, ich dachte wenn ich help als neuen Punkt initialisiere, wird dann mittelpunkt automatisch mitinitialisiert.Echt vielen dank, werde mir mal dein tutorial über die ferien zu Gemüte ziehen



  • public class Punkt
       {public int a;
        public int b;
        public int c;
        public Punkt mittelpunkt;
       }
    

    das dürfte in einer Rekursion enden



  • Nein. Solange er nicht im Ctor von Punkt, mittelPunkt initialisiert.



  • Nichtsdestotrotz ist es "Blödsinn", daß ein Punkt einen Mittelpunkt hat, sondern die Kugel sollte den Mittelpunkt als Member haben, d.h.

    class Kugel
    {
      public class Punkt
      {
        public int a;
        public int b;
        public int c;
      }
      public Punkt mittelpunkt;
      public doule radius;
    

    Und dann wäre auch die Eingangsfrage ganz einfach zu klären gewesen.

    P.S. Warum hast du verschiedene Datentypen für Koordinaten (int) und Radius (double)???



  • ...und allgemein würde ich die Punktklasse nicht in die Kugelklasse einbetten da dessen Exemplare sicherlich auch ohne Kugel dienlich sind.


Anmelden zum Antworten