Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ergebnis einer Methode bei einer anderen verwenden
Hallo,
kann mir jemand sagen, wo genau mein Fehler liegt? Würde gerne einen double Array erhalten, bekomme jedoch folgendes in der Konsole: [D@2f92e0f4
public static double[] normalizeVector3D(int[] integerArray) throws Exception, NullPointerException {
double result = vectorSum(integerArray);
result = (Math.sqrt(result));
result = Math.round(result * 1000.0) / 1000.0;
double[] doubleArray = new double[integerArray.length];
for (int i = 0; i < doubleArray.length; i++) {
doubleArray[i] *= Math.round(result * 1000.0) / 1000.0;
}
return doubleArray;
}
public static int vectorSum(int[] x) throws Exception, NullPointerException {
for (int i = 0; i < x.length; i++) {
if (x[i] == 0 && x[i + 1] == 0 && x[i + 2] == 0 || x == null) {
throw new Exception("Das übergeben Array ist ein Nullvektor oder das Array ist gleich null");
}
}
int result = 0;
for (int i = 0; i < x.length; i++) {
result += x[i] * x[i];
}
return result;
}
An dieser Stelle kann x niemals null sein, 2 Zeilen vorher bei x.length würde in dem Fall bereits eine NullPointerException ausgelöst.
Eine NullPointerException deklariert man auch nicht in der Methode, da es eine RuntimeException ist.
Aber ich nutze doch gar keinen String Array? weshalb sollte es mir denn so angezeigt werden? mit Arrays.toString(...) funktioniert es aber auch nicht, da ich dann den rückgabetyp ändern müsste oder nicht?
An dieser Stelle kann x niemals null sein, 2 Zeilen vorher bei x.length würde in dem Fall bereits eine NullPointerException ausgelöst.
Eine NullPointerException deklariert man auch nicht in der Methode, da es eine RuntimeException ist.
die ausnahmen können erst mal ignoriert werden. mit denen habe ich mich in der methode noch nicht beschäftigt. habe sie nur hingeschrieben, damit ich es später nicht vergesse^^
Aber ich nutze doch gar keinen String Array? weshalb sollte es mir denn so angezeigt werden? mit Arrays.toString(...) funktioniert es aber auch nicht, da ich dann den rückgabetyp ändern müsste oder nicht?
da bekomme ich den inhalt^^ aber habe echt keine ahnung, wo ich im code was umändern muss, um tatsächlich den inhalt zu bekommen ohne den rückgabewert zu verändern
Du musst deinen Rückgabewert nicht ändern. Du bekommst ein Array zurück - das Array, was du zurückbekommst steckst du in Arrays.toString rein und das was da zurückkommt in System.out.println
Warum? Wenn du ein Objekt - egal was - direkt ausgibst, kommt in der Regel eine interne Darstellung raus Das ist selten die Darstellung, die man haben will.
In den meisten Fällen kann man nicht das Objekt einfach ausgeben, sondern muss es in eine geeignete Darstellung überführen. Die kann man selber schreiben - oder wie im Falle von Arrays, bereits vorhandene Hilfsmethoden verwenden, die eine schönere Darstellung liefern.
Da solltest du da auch 2.0 reinschreiben. Die Zeile sagt erzeuge mir ein double Array das genau so viel Platz hat, wie die Läng des integer Arrays. Mehr nicht. Der inhalt aus dem Integer Array wird nicht kopiert - warum auch. Das müsstest du selber machen.