Übergabe von Arrays an Methoden

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;

}
}
 

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.exe

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 ;)
 

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())".
 
K

kneitzel

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

kneitzel

Gast
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?
 
K

kneitzel

Gast
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....
 
K

kneitzel

Gast
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 :) ).
 
K

kneitzel

Gast
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
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
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
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
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
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
E Übergabe von werten aus einem JDialog 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
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
D Übergabe von Variablen Java Basics - Anfänger-Themen 11
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
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
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben