Array ausgeben

Wuast

Bekanntes Mitglied
Hallo Leute,
wie kann ich einen Array ausgeben über println, wenn der Typ ein Objekt und nicht etwa in primitiver Datentyp ist. toString will Eclipse nicht, deepToString funktioniert nicht. Alternativer Vorschlag ist, den Array on long[] zu ändern

Java:
Auto[] automobile;

public fuhrparkVerwalten(){
    automobile = new Auto[]
        // Auflistung des Fuhrparks
}

Kann mir da jemand kurz einen Tip geben, wie ich die einzelnen Indezes in der Konsole ausgeben kann?
Geht das nur über eine Schleife?
Danke schonmal und LG 🙂
 
Das hat der Kollege vom YT den ich angeschaut habe aber nicht so erklärt.. danke ^^

Kannst du mich noch kurz erleuchten, wie ich DAS jetzt in einer Main-Methode aufrufen will? weil die Klasse Fuhrparkverwaltung, die den toString enthält, brauche ich in der Main. Fuhrparkverwaltung.toString(Auto[] automobile) funktioniert nicht.

Und noch eine zweite Frage, dann müsste ich soweit sein:
Kann ich innerhalb einer Klasse mehrere toStrings haben? würden die Methoden dann alle toString(Objekttyp Objekt) lauten oder toString1(); toString2(); ... ? Die Lösungsvorschläge von Eclipse verwirren mich hier etwas
 
Zuletzt bearbeitet:
Kannst du mich noch kurz erleuchten, wie ich DAS jetzt in einer Main-Methode aufrufen will? weil die Klasse Fuhrparkverwaltung.toString(Auto[] automobile) funktioniert nicht.
Dazu müsstest Du die Methode static deklarieren.

Kann ich innerhalb einer Klasse mehrere toStrings haben?
Ja.

würden die Methoden dann alle toString(Objekttyp Objekt) lauten
Ja, das ist prinzipiell möglich. Nennt sich "überladen" (https://de.wikipedia.org/wiki/Überladen).
 
bedankt!
Ja, das ist prinzipiell möglich. Nennt sich "überladen" (https://de.wikipedia.org/wiki/Überladen).
Jaaa, da war was 😀


Also heißt es korrekt:
Java:
private static String toString(Auto[] automobile) {

  return "Fuhrpark besteht aus" + Arrays.toString(automobile);

}

//und in der Main-Klasse:

Fuhrparkverwaltung.toString(Auto[] automobile)
? Zu dem toString bekomme ich nämlich leider eine Fehlermeldung und die passenden Lösungsvorschläge wollen mir in der ansonsten korrekten Syntax rumfuschen oder Typisierungen ändern von Auto [] nach Fuhrparkverwaltung ...
 
Zuletzt bearbeitet:
Normalerweise sollte ein Fuhrpark-Objekt aber selbst das Array automobile verwalten (oder eine andere Datenstruktur), so dass Du auf dem Fuhrpark-Objekt selbst z. B.
Java:
@Override
public String toString() {
    return "Fuhrpark besteht aus" + Arrays.toString(automobile);
}
aufrufen könntest.

Java:
Fuhrpark fuhrpark = new Fuhrpark();
// Autos hinzufügen

System.out.println(fuhrpark.toString());
// oder
System.out.println(fuhrpark);
Die letzte Zeile funktioniert, weil jede Klasse von Object erbt, dort die Methode toString() definiert ist und bei der Ausgabe das toString() automatisch aufgerufen wird.
 
Meine option:
[CODE lang="java" title="test"]package test;

Auto[] automobile;

public class test{
public static main(String[] args) {
automobile = Auto[100];
//Autos hinzufügen
for(Auto auto:automobile) {
System.out.println(auto.type); // Oder andere Methode. Ersetze dann "auto.type" zu "auto.METHODE" die den Autotyp ausgibt(oder was du ausgeben möchtest)
}
}
}[/CODE]
 
Meine option:
[CODE lang="java" title="test"]package test;

Auto[] automobile;

public class test{
public static main(String[] args) {
automobile = Auto[100];
//Autos hinzufügen
for(Auto auto:automobile) {
System.out.println(auto.type); // Oder andere Methode. Ersetze dann "auto.type" zu "auto.METHODE" die den Autotyp ausgibt(oder was du ausgeben möchtest)
}
}
}[/CODE]
das array wurde außerhalb der Klasse definiert und ein new fehlt aber ist ja nicht schlimm

was eher zu betrachten ist
wessen job ist es festzulegen wie eine Auto ausgegeben werden soll ?
ansich ist das im regelfall problem des eigenen Objektes mit der toString() methode

falls diese aber für den programmierer nicht passt kommt man um deinen Ansatz wahrschienlich nicht herum, jedoch denk ich dass toString "mehr" auf die Problematik zutrifft und auch mehrwert hat

Er kann sich zb einen Fuhrpark Container bauen wo man ein Array drin hat und diese mit autos befüllen kann und die Klasse ist für das Managen des Arrays zuständig und unter anderem für die Ausgabe auf der Konsole
 
wessen job ist es festzulegen wie eine Auto ausgegeben werden soll ?
ansich ist das im regelfall problem des eigenen Objektes mit der toString() methode
Nein, es ist gerade nicht Job eines Objekts festzulegen, wie es von anderen Objekten dargestellt wird.

toString() liefert eine menschenlesbare Darstellung des Objekts, z. B. und insbesondere für Ausgaben in Logs bzw. zum Debuggen. Wenn diese Darstellung zufällig auch für die Ausgabe im UI passt, kann sie natürlich verwendet werden, wobei das nicht ganz ungefährlich ist. Ansonsten ist es Job eines anderen Objekts festzulegen, wie ein Objekt ausgegeben wird.
 
also was ich weis das immer miserabel ist , wenn man ein projekt als mvn install als lokales repo speichert und das von einem anderen projekt importiert und in dem Projekt die module info ädnert dann kommt ein referenzierungs fehler der alles rot macht... aber der fehler existiert nich ... dann muss man neu starten und dann funktioniert es wieder

sonst bin ich noch nicht in einen gravierenden fehler rein gelaufen
 
sonst bin ich noch nicht in einen gravierenden fehler rein gelaufen
Wie gesagt: keine Ahnung. Ich nehm Eclipse nicht her, weil ich das Bedienkonzept grauenhaft finde aber das ist ja nun Geschmackssache. Mir fällt bloß auf, dass die Leute, die ein Problem mit der IDE haben, fast ausschließlich Eclipse-Benutzer sind. Kann natürlich auch einfach der Verbreitung geschuldet sein.

Den Kommentar oben darfst Du auch nicht ernst nehmen, ich foppe hier öfter gegen Eclipse, @LimDul gefällt das 😛

Darf ich fragen welche IDE du nutzt ich nutzte IntelliJ
Unterschiedlich. In der Regel NetBeans, manchmal IntelliJ, manchmal VSCode (sofern man das als IDE bezeichnen will) und fürs Forum nehm ich einfach vim.
 
Es ist halt viel Gewöhnungssache. Grundsätzlich kommt man mit jeder IDE für die meisten Hobby-Projekte zurecht. Sie haben ggf. etwas andere Konzepte im Detail, aber jede tut es. Man ist am Anfang gut beraten, auf die zu setzen, für die man den besten Support hat, wobei man am ehesten Leute fragen kann, wenn was klemmt. So hat jede IDE andere Shortcuts, etc. Zudem sind die Standard-Formatter in jeder IDE auch etwas unterschiedlich, so dass es hilfreich ist, wenn man gemeinsam an einem Projekt arbeitet, dass alle die gleiche IDE verwenden.

Interessant wird es dann eher, wenn man in den professionelleren/Enterprise Bereich geht. Da kann es je nach Firma sein, dass eine IDE gesetzt ist - daher ist es auch nicht schlecht mal über den Tellerrand zu schauen. Auch treten dann Stärken & Schwächen einzelner IDEs deutlich stärker raus. Aber auch da kommt man mit jeder IDE noch zu rande.


Du hast es erkannt 😛
Pff - Spalter!

Mal ein paar Worte zu Eclipse, weil @mihe7 mich da erwähnt hat 🙂
Ich bin Eclipser Nutzer seit Ewigkeit - ich glaub seit Eclipse aus den Kinderschuhen entwachsen und lange bevor es eine RCP wurde. Dementsprechend bin ich dran gewöhnt wie man damit arbeitet und wie man mit Problemen umgeht, weswegen es auch aktuell Privat noch die IDE meiner Wahl ist. Insbesondere für den Kram den ich Privat mache hab ich keine Probleme.

Auf der Arbeit bin ich an Eclipse gebunden, weil wir in der Firma ein Eclipse Plugin haben zur Modellierung & Code-Generierung. Dementsprechend kommen wir da (noch) nicht weg. Aber - und da muss ich @mihe7 leider Recht geben - Eclipse hat ein paar Unschönheiten, wo ich auch regelmäßig fluche. Das eine ist das Zusammenspiel mit JavaEE-Servern - das Deployment aus Eclipse heraus macht immer wieder mal Probleme, dass eine persistence.xml nicht aktualisiert wird oder doppelte Beans rumliegen, so dass ich immer über die Kommandozeile baue & deploye. Auch das virtuelle FileSystem von Eclipse, wenn man einen Branch auf der Konsole wechselt führt immer wieder zu seltsamen Effekten, auch im Zusammenspiel mit der Code-Generierung. Da läuft dann die Code-Generierung auf einem Zwischenstand zwischen alten & neuen Branch, was einfach Murks produziert. Ist mit einem git reset --hard schnell behoben, nervt aber.
 
So wie @LimDul seit Ewigkeiten Eclipse verwendet, ist es bei mir NetBeans. In der Arbeit setzen wir ebenfalls NetBeans ein (gut, könnte an mir liegen 😇). Im Endeffekt ist mir das aber wurscht, so lange mir das Tool hilft.

NetBeans ist gerade für EE (Payara) m. E. hervorragend geeignet, ohne jetzt über eine andere IDE etwas sagen zu können. Run -> AS wird gestartet, Anwendung deployed. HTML bearbeiten -> Änderung steht sofort zur Verfügung. Java-Code bearbeiten -> Projekt wird automatisch neu gebaut und deployed.

Was ich auch sehr schön finde: Maven-Projekte kommen fast ganz ohne NB-spezifische Dateien aus: es gib noch eine zusätzliche XML, das wars. Keine tonnenweise Dateien in (versteckten) Verzeichnissen (.classpath, .settings, .iml., .idea, ...)

Auch bringt NB praktisch alles mit, was man so braucht: den EE-Support, Maven und Git-Client, einen einfachen Datenbankclient und neben dem obligatorischen Debugger auch den Profiler. Insgesamt macht die IDE auch einen aufgeräumten Eindruck. EDIT: natürlich Code Generation und Refactoring, aber das gibts auch in jeder IDE.

Es gibt sicher auch viele Nachteile, an die man sich halt einfach gewöhnt hat. Wirklich nervig ist z. B. dass es manchmal den Cache zerschießt, der dann über das Dateisystem gelöscht werden muss. Nach dem NB Neustart wird der wieder aufgebaut, was aber etwas Zeit in Anspruch nimmt. Ressourcenarm ist NB auch nicht gerade.

Wenn man die Möglichkeit hat: einfach ausprobieren, dann findet man was passendes - selbst, wenn es am Ende Eclipse ist 🙂
 

Neue Themen


Zurück
Oben