Kugel mittelpunkt setzen prob
-
Könntest du mir liebenswerter Weise einmal zeigen wie ich es machen soll?Bin grad echt überfordert
-
ahh, jetzt hab ich es gerafft!
-
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?
-
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.