Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Aufgabe 6.2 (Verbunddatentypen)
Hi,
kurze Frage zur Aufgabe 6.2 bzgl der Methode
double norm()
. Darf ich hier die Wurzelfunktion aus dem Mathepaket benutzen, also das MathePaket damit auch importieren?
Danke für die Info!
Ich wuerde davon ausgehen, da es nicht explizit verboten wurde, wie in der 3. Uebung.
Und falls doch kann man einfach die Implementierung aus der 3. Uebung in die Klasse kopieren (als private) und schon hast du deine Wurzelfunktion ![]()
Nur waere das ziemlich haesslich
Ja duerft (und sollt) ihr verwenden.
Frage VektorND(double[] initData) und void init
public VectorND (double[] initData)
{
}
public void init(double[] initData)
{
}
Gibt es einen inhaltlichen Unterschied? Das obere ein Konstrukter, das untere eine zusätzliche Methode. Die Bearbeitung ist die gleiche welche die jeweiligen Blöcke ausführen ist dieselbe, oder?
Frage zu: int getDimension() bzw. “Falls das Datenarray data noch nicht initialisiert wurde, soll 0 zuruckegegeben werden.”
Ist hier “initialisiert” auf VectorND(double[] initData) und void init(double[] initData) bezogen?
Denn == null macht ja nicht viel Sinn weil das array in jedem Konstruktor initialisiert wird.
Danke, hat sich erledigt, bin durcheinander gekommen :rolleyes: .
Die Funktionalität ist ähnlich, aber nicht gleich.
Wenn der Konstruktor aufgerufen wurde, dann ja. Muss aber nicht:
public class SampleClass
{
SampleObject a;
public void MethodA ()
{
// Konstruktor von SampleObject wurde nicht aufgerufen!
a.doSomething();
}
}
Aber wie soll man MethodA() aufrufen ohne instance von SampleClass (und somit den Konstruktor)?
public class SampleClass {
public class SampleObject {
public SampleObject(int n) {
}
public void doSomething(){}
}
SampleObject a;
public void MethodA() {
a.doSomething();
}
public static void main(String[] args) {
SampleClass sc = new SampleClass();
sc.MethodA();
}
}
SampleObject sample = null;
sample.MethodA();
Ohne Initialisierung funktioniert meines Wissens (ohne Gewähr) der Aufruf von methodA nicht, ohne Konstruktoraufrufe hingegen schon.
Das ist klar, macht aber im Bezug auf die Aufgabe keinen Sinn oder?
Meine Frage ist ja warum auf == null ueberprueft werden soll wenn beide Konstruktoren das array initialisieren.
Dann muss das array ja praktisch von außen oder einer anderen Funktion nach dem Konstruktoraufruf auf null gesetzt werden… und wenn das in der Aufgabe auch möglich sein soll dann muss man ja in jeder Funktion erstmal auf null pruefen.
Beides stürzt mit einer NullPointerException ab, bevor die eigentliche Methode ausgeführt wird. Man kann in dieser Form keine Instanzmethoden ausführen ohne das Objekt zu instanziieren (und damit den Konstruktor aufzurufen).
Eine endgültige Antwort darauf, was genau passieren soll, kann ich allerdings auch nicht geben. Ich würde einfach immer die Anzahl der Dimensionen zurückgeben, sobald das Array erstellt wurde (als Datenwerte stehen eben Nullwerte im Array). Aber da man effektiv nur über init (oder den zweiten Konstruktor) Werte in das Array schreiben kann, könnte es auch sein, dass das Array erst als initialisiert gilt, sobald da Werte drin stehen.
Diese Verwirrung ist übrigens ein gutes Beispiel dafür, weshalb man Initialisierung immer über Konstruktoren und nicht über zusätzliche init() Methoden lösen sollte ;).
Hallo alle ,
ich weiss , dass die Aufgabe einfach ist , aber ich kann nicht verstehen was soll ich genau machen ,
ich brauch dass jemand mir auf andere Wörter die Aufgabe erklärt , zum Beispiel , was ist gemeint mit a )
VectorND(int dim). Implementieren Sie zunächst den Konstruktor der Klasse VectorND. Als Parameter wird die Anzahl der Dimensionen dim übergeben. Stellen Sie hier sicher, dass Sie den notwendigen Speicherbereich für die Dimensionen bereit stellen. Sie können annehmen, dass dim ausschließlich positive Werte (>0) annimmt.
sprachlich ist für mich schwer , Aber ich habe davon verstanden dass ich in diese Konstruktor musste diese dim in einem neuen Variable deklariert werden , aber das macht kein Sinn , ich kann einfach die Aufgabe sprachlich nicht ganz beherrschen
wenn jemand Zeit und Geduld hat , die Aufgabe in andere Wörter zu erklären , vielleicht kann ich doch schaffen ![]()
Danke im Voraus
Es ist schwierig dir die Aufgabe hier zu erklären, ohne die Lösung direkt posten zu wollen.
Am besten besuchst du mal eine Rechnerübung bzw. fragst deinen Tutor nach der Übung.
Hat noch jemand das Problem: “Error in given test case” obwohl alles richtig funktionieren sollte bzw. ich die gleiche Lösung bekomme, wie auf dem Blatt?
Habe das gleiche Problem wie MichaelK.
Ich versteh auch nicht ganz, was man in der ersten Teilaufgabe tun muss.
Was ist denn mit “notwenidgen Speicherbereich für Dimensionen bereit stellen” gemeint ?
Und das man annemen kann, dass dim ausschließlich positive Werte annimmt. Was soll mir das bringen ?
Ich komm irgendwie nicht weiter bei dieser Teilaufgabe.
Schau mal, ob deine Methode „add“ komplett stimmt. Die wird nämlich in der main-Methode nicht getestet, aber offensichtlich im Test-Case. War bei mir zumindest der Fall
hatte auch das richtige Ergebnis am Ende.