Übergabe von Arrays an Methoden

S

Satako

Mitglied
Ich habe ein Problem mit der Ausgabe.
Da es ja jetzt nicht nur eine Methode, sondern ein Array ist, gibt er die Werte nicht richtig aus.
Wie ändere ich die System.out...?

Es geht im eine Kreisberechnung:
Der Umfang eines Kreises soll berechnet werden.

Mein Programm sieht wie folgt aus:

public class Kreis {

public static void main(String[] args) {
// Kreis
int radius = 30;

// hier gibt er Der Umfang des Kreises[radius = 30]: [D@4517d9a3 aus, und das ist verkehrt.
System.out.println("Der Umfang des Kreises[radius = " + radius + "]: " + umfangKreis(radius));

}

// Berechnung des Umfangs eines Kreises
public static double[] umfangKreis(double radius)
{

double feld[] = {radius * radius * Math.PI};
return feld;

}
}
 
S

SonoHimitsu

Mitglied
Was geht denn nicht...
Java:
import java.util.Arrays;

public class Kreis {

	public static void main(String[] args) {
// Kreis
		int radius = 30;

// hier gibt er Der Umfang des Kreises[radius = 30]: [D@4517d9a3 aus, und das ist verkehrt.
		System.out.println("Der Umfang des Kreises[radius = " + radius + "]: " + Arrays.toString(umfangKreis(radius)));

	}

// Berechnung des Umfangs eines Kreises
	public static double[] umfangKreis(double radius) {

		double feld[] = { radius * radius * Math.PI };
		return feld;

	}
}
 
Kirby_Sike

Kirby_Sike

Top Contributor
Das liegt daran, dass du die Referenz des Arrays printest ;) Arrays sind Referenzdatentypen. Um jedes Element des Arrays zu printen musst du mit einer Schleife durch das Feld iterieren ;)
 
S

Satako

Mitglied
Bei der Ausgabe des Umfangs gibt er: [D@4517d9a3 aus
Also kuddelmuddel, anstatt den Wert
 
S

SonoHimitsu

Mitglied
So viel Kuddelmuddel ist das gar nicht ;) "[D" steht für double array, "@" für @, und "4517d9a3" ist das Ergebnis des Aufrufs von "Integer.toHexString(hashCode())".
 
Kirby_Sike

Kirby_Sike

Top Contributor
Du kannst das Array entweder, wie @SonoHimitsu geschrieben hat, mit Arrays.toString(deinArray) printen oder du gehst mit einer Schleife durch dein Array und printest jeden Wert einzeln ;)
 
kneitzel

kneitzel

Top Contributor
Warum gibst du denn ein Array mit nur einem Wert zurück? Wäre es nicht einfacher, nur den Wert zurück zu geben?
 
kneitzel

kneitzel

Top Contributor
Vielleicht möchte er sein Programm ja noch erweitern. 5, setzen.
Also wenn man mehrere Daten hat, dann schafft man sich entsprechende Datenstrukturen.

Wenn Du absolut keine Ahnung von Software Entwicklung hat, dann würde ich Dir raten, Deine Klappe zu halten oder zumindest nicht so aufzutreten. Zumal Du heute erst dein Können in einem eigenen Thead unter Beweis gestellt hast....

Und da wunderst Du Dich, wenn Accounts von Dir gesperrt werden?
 
kneitzel

kneitzel

Top Contributor
Hier empfehle ich einfach Clean Code von Uncle Bob. Wurde schon oft erwähnt von mir. Kann ich nur empfehlen.

Code gehört immer an eine vernünftige Stelle. Eine Methode wie hier würde einer Art Utility Klasse/Methode entsprechen. Bezüglich Objektorientierung recht fatal. Da dann lieber eine Klasse Kreis und schon hat man eh die Klasse.

Bleibt die Frage, ob man so Werte wie Umfang überhaupt speichert. Die Berechnung geht ja schnell. Damit hat man dann rein die Klasse Kreis mit holeUmfang Methode.

Das ist halt das, was ich da sehe. Aber das ist etwas viel für einen Anfänger denke ich. Daher habe ich nur einen kleinen Hinweis gegeben, dass das Array bei der Rückgabe hier unnötig ist.

Und wegen dem bissig: schau Dir einfach Deine Aussage von wegen Setzen 5 an....
 
kneitzel

kneitzel

Top Contributor
Da gebe ich dir Recht, aber ich vermute einfach mal dass @Satako noch relativ am Anfang steht und vermutlich noch nicht die Kenntnisse und das Wissen dazu hat :)
Daher gab es nur den Hinweis, dass die Rückgabe eines Arrays mit immer genau einem Wert wenig Sinn macht. Das ging an den TE. Der Hinweis mit dem erweitern ging rein an Tobias, der hier irgendwelche Erweiterungen gesehen hat (die so hoffentlich nicht kommen. Ich sehe da schon tolle Lösungen a.la. Array von Object da ggf ja nicht nur double Werte zurück gegeben werden sollen ... da erscheint dann ein YT Tutorial mit Klasse Variablen und ganz vielen public static Feldern als gute Lösung :) ).
 
kneitzel

kneitzel

Top Contributor
Also ein "Definitiv Nein" das Du hier bringst, ist in meinen Augen nicht zu rechtfertigen. Ich habe zwei Lösungen vorgestellt und die erste Lösung, die Du präferierst, habe ich so noch nie in einem Projekt gesehen. Das letztere ist aber ein Pattern, das durchaus in der Praxis vorkommt. C / C++ Entwickler kennen das evtl. - Stichwort "getLastError()"....

Der Vorteil der zweiten skizzierten Lösung ist die Typsicherheit. Man hat halt "globale" Variablen (public static), die gefüllt werden und dann nach dem Aufruf ausgewertet werden können.
Bei der anderen Lösung hat man dann ganz viele casts um aus dem Object[] eben String, Integer, Double, ... heraus zu lesen.
Und wenn man dann auf diese Art und Weise zugreift:
berechneKreis(radius)[UMFANG_KREIS]
dann sehe ich auch die Gefahr, dass da mehrfach aufgerufen wird. Da ist dann etwas wie:
Code:
Kreis.brechneKreis(radius);
Double umfang = Kreis.letzterUmfang;
String beschreibung = Kreis.letzteBeschreibung;
// ...
schon deutlich besser lesbar.

Aber machen würde ich das so nie - Das ist ja ein Alptraum bezüglich Multitasking....

Aber um das etwas aufzuzeigen, wie man sowas machen würde und was dann hoffentlich auch dem TE wieder helfen kann:
Code:
public class Kreis {
  private double radius;
 
  public Kreis(final double radius) {
    this.radius = radius;
  }
 
  public double berechneUmfang() {
    return radius * radius * Math.PI ;
  }
}

Und da hat man dann alles zum Kreis schön enthalten. Und wenn man da noch mehr braucht, wie z.B. Flächenberechnung oder einen Kreis aus einer gegebenen Fläche oder gegebenen Umfang zu erzeugen, dann kann das alles da rein:

Code:
public class Kreis {
  private double radius;
 
  public Kreis(final double radius) {
    this.radius = radius;
  }
 
  public double berechneUmfang() {
    return 2 * radius * Math.PI; // Formel war bei TE falsch, er hat die Fläche berechnet!
  }

  public double berechneFlaeche() {
    return radius * radius * Math.PI;
  }

  public static Kreis vonFlaeche(final double flaeche) {
    return new Kreis(....); // Berechnung des Radius weggelassen.
  }

  public static Kreis vonUmfang(final double flaeche) {
    return new Kreis(....); // Berechnung des Radius weggelassen.
  }
}

Ansonsten fällt mir gerade nichts ein, was man da noch einbauen könnte. Aber das zeigt hoffentlich recht deutlich den objektorientierten Ansatz, der auch nicht sonderlich komplex ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Furtano OOP Memento Pattern | übergabe einer Kopie des Arrays Java Basics - Anfänger-Themen 0
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J Übergabe von Parametern an andere Methoden Java Basics - Anfänger-Themen 5
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
R Methoden Übergabe von einer Methodenvariable Java Basics - Anfänger-Themen 3
M Übergabe von Werten Java Basics - Anfänger-Themen 10
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
C Erste Schritte Übergabe von Klassen Java Basics - Anfänger-Themen 2
C Methoden Objekte und Methode und Übergabe Java Basics - Anfänger-Themen 4
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
T Problem bei Übergabe von Variablen Java Basics - Anfänger-Themen 1
fLooojava Probleme bei der Übergabe einer Variable Java Basics - Anfänger-Themen 14
A Problem mit set.Text und übergabe Java Basics - Anfänger-Themen 2
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
S OOP Übergabe eines Objektes? Java Basics - Anfänger-Themen 1
fLooojava OOP Übergabe/Output in Textfield Java Basics - Anfänger-Themen 4
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
J Problem bei Param.übergabe und dem erstellen von JButtons Java Basics - Anfänger-Themen 4
S Übergabe Java Basics - Anfänger-Themen 14
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A NullPointerException bei Übergabe eines Array Java Basics - Anfänger-Themen 8
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
D Klassen Problem - Übergabe an Konstruktor von Superklasse Java Basics - Anfänger-Themen 2
D Objekt Übergabe Java Basics - Anfänger-Themen 12
M Array Übergabe Java Basics - Anfänger-Themen 17
W Übergabe Stringzeilen von serieller Schnittstelle in andere Klasse Java Basics - Anfänger-Themen 3
B Übergabe Dateiname (String) an andere Klasse Java Basics - Anfänger-Themen 4
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
M problem mit string übergabe an klasse Java Basics - Anfänger-Themen 10
A übergabe wert in andere klasse Java Basics - Anfänger-Themen 8
A Übergabe von Variablen zu Paintmethode Java Basics - Anfänger-Themen 2
N Array Übergabe Java Basics - Anfänger-Themen 9
L Klassen Parameter Übergabe Java Basics - Anfänger-Themen 12
A OOP Übergabe eines Wertes an den enum Konstruktor Java Basics - Anfänger-Themen 12
O Übergabe von Variablen Java Basics - Anfänger-Themen 9
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
A Frage zur Übergabe von Strings Java Basics - Anfänger-Themen 9
N Übergabe problem Java Basics - Anfänger-Themen 6
M Übergabe von VM Argumenten Java Basics - Anfänger-Themen 4
J Übergabe einer ArrayList an mehrere Threads Java Basics - Anfänger-Themen 3
A konstruktor übergabe fehler Java Basics - Anfänger-Themen 8
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
G JFileChooser übergabe an Directory Java Basics - Anfänger-Themen 4
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
Z BigInteger Methoden und deren Übergabe Java Basics - Anfänger-Themen 3
K Übergabe einer im EventListener definierte variablen Java Basics - Anfänger-Themen 2
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
M Problem bei der Übergabe von Werten Java Basics - Anfänger-Themen 7
G Übergabe von Parametern an JSP Java Basics - Anfänger-Themen 3
S Veränderung von Protected Daten durch Übergabe? Java Basics - Anfänger-Themen 3
K Übergabe der Variable für Farbe Java Basics - Anfänger-Themen 6
G List<.> nach Übergabe vergleichen? Java Basics - Anfänger-Themen 3
G Übergabe Variablen von Servlet zu JSP? Java Basics - Anfänger-Themen 4
M [SOLVED]parameter übergabe an objekte Java Basics - Anfänger-Themen 2
R Beiß mir die Zähne aus an der Request-Parameter-Übergabe! Java Basics - Anfänger-Themen 10
lin Übergabe an JPanel-Klasse Java Basics - Anfänger-Themen 3
S NullPointerException bei Array-Übergabe Java Basics - Anfänger-Themen 3
Z übergabe von string[] an konstruktoren oder methoden Java Basics - Anfänger-Themen 3
D Übergabe von Variablen Java Basics - Anfänger-Themen 11
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
W übergabe des aktuellen wertes in andere Klasse Java Basics - Anfänger-Themen 3
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
F Übergabe Vaterframe mit this und Fehlermeldung. Java Basics - Anfänger-Themen 2
D Fragen zu Methoden und Übergabe von Werten Java Basics - Anfänger-Themen 4
G Übergabe von Variablenwerten zwischen Methoden Java Basics - Anfänger-Themen 4
D Problem bei Übergabe von Werten an eine Methode Java Basics - Anfänger-Themen 2
H Übergabe eines Wertes an eine Bean --> Bean leer Java Basics - Anfänger-Themen 6
T Array-Übergabe Java Basics - Anfänger-Themen 7
M Windows Pfad-Übergabe.. Java Basics - Anfänger-Themen 6
S String mit Konstruktor (per Übergabe) initialisieren Java Basics - Anfänger-Themen 10
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
K Sudoku mit 2D Arrays Java Basics - Anfänger-Themen 19
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
1 Arrays Java Basics - Anfänger-Themen 7
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51

Ähnliche Java Themen

Anzeige

Neue Themen


Oben