Array über ein Ausgabemethode in main ausgeben

Schlokopp

Mitglied
Hi zusammen,

ich habe folgende Problemstellung:

Legen Sie in der main()-Methode ein Feld(Array) an.
Die ersten Elemente sollen wie folgt initialisiert werden:
"AA-Mignon","NiCd", 1.2,2000 fürs erste Feldelement,
"AAA-Micro","NiMH",1.2,950 fürs zweite Feldelement.

Das zweite Feldelement soll außerdem mit der Ausgabemethode ausgegeben werden.

Ich hoffe es kann mir hierbei jemand behilflich sein! Danke!
 

Robertop

Bekanntes Mitglied
Hallo Schlokopp,

wie sieht denn deine main() Methode bis jetzt aus?

Falls die Klasse der Elemente auch von dir geschrieben ist, würde ich da wahrscheinlich ein schönes toString() reinbauen und dann zur Ausgabe einfach System.out.println verwenden.
 

Schlokopp

Mitglied
public class batterie_test
{
public static void main(String[] args) {
batterie typ1=new batterie("AA-Mignon", "NiCd",1.2,2000);
Object[] typ2=new Object[2];

typ2[0]="AA-Mignon";
typ2[1]="AAA-Micro";




typ1.ausgabe();
}}

Das ist meine aktuelle Main-Methode

public class batterie{
public String name;
public String typ;
public double spannung;
public double kapazität;

//Konstruktoren
batterie(){};
batterie(String n,String t,double s,double k){
name=n; typ=t;spannung=s;kapazität=k;
}
//Zuweisung
public void setName(String n){name=n;}
public String getName(){return name;}
public void setTyp(String t){typ=t;}
public String getTyp(){return typ;}
public void setSpannung(double s){spannung=s;}
public double getSpannung(){return spannung;}
public void setKapazität(double k){kapazität=k;}
public double getKapazität(){return kapazität;}

//Ausgabe
public void ausgabe(){
System.out.println("Name:"+this.name+",Typ:"+this.typ+",Spannung:"+this.spannung+",Kapazität:"+this.kapazität);

}

}
}

Und dazu dann noch meine Klasse Batterie.
 
M

Mart

Gast
du hast vier spalten , also dein Object array braucht 4 plätze für die Spalten
in den 4 Plätzen fügst du deine Parameter der reihe nach jeweils pro Reihe ein
für den ersten Parameter ein string array (ka wie viel platz du brauchst insgesamt) ein wo du deine AA Mignon usw speicherst
für parameter 2 brauchst du nochmal ein string array für NiCd usw
dann brauchst du noch ein Double Array für 1.2 usw
und dann noch ein Integer array für 2000 usw

dann musst du bei der ausgabe immer die Reihen durchlatschen

es ist ansich ein 2 Dimensionales Array ( Also "Tabelle" mit 4 spalten und halt deinen Reihen ) und in diese fügst du dann ein ... ist wie in excel fast
 

Schlokopp

Mitglied
Also das Array zu schreiben ist an sich nicht das Problem! Ich frage mich nur wie ich diesen mit der Ausgabemethode aus der anderen Klasse wiederum in main ausgeben lassen kann?
 
M

Mart

Gast
Also das Array zu schreiben ist an sich nicht das Problem! Ich frage mich nur wie ich diesen mit der Ausgabemethode aus der anderen Klasse wiederum in main ausgeben lassen kann?
du kannst eine Main Methode nur 1 Einziges mal aufrufen und wenn du da Am Ende bist ist das Programm zuende

was du vllt tun kannst als hinweis
-> du erstellst eine Klasse wo man folgende Sachen als Methoden hat
-> man einfügen kann
-> wo man Löschen kann von dem Array
-> auslesen von dem Array

und dann in der Main erstellst ein Objekt der Klasse und führst die Methoden in der Richtigen Reihenfolge auf
 

Schlokopp

Mitglied
Also ist dies, wie ich vermutet habe, nicht möglich und ich müsste in meiner Klasse Batterie eine weitere öffentliche Variable bzw. hier den Array deklarieren, um dann den Array über die main-Methode ausgeben zu können?
Habe ich das richtig verstanden?
 
K

kneitzel

Gast
du kannst eine Main Methode nur 1 Einziges mal aufrufen und wenn du da Am Ende bist ist das Programm zuende
Da würde ich einmal rein grätschen, denn das ist so nicht ganz korrekt.

Die main Methode ist ein Startpunkt für die Programmausführung. Aber darüber hinaus ist es nur eine normale Methode.
Und das Programm läuft so lange, bis auch alle Threads, die nicht als Hintergrund-Thread markiert sind, beendet ist. (Hier fällt mir z.B. die GUI Entwicklung ein. Da ist die main Methode beendet aber der UI Thread und die Applikation läuft weiter.

Nachzulesen z.B. auf https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Thread.html
When a Java Virtual Machine starts up, there is usually a single non-daemon thread (which typically calls the method named main of some designated class). The Java Virtual Machine continues to execute threads until either of the following occurs:

  • The exit method of class Runtime has been called and the security manager has permitted the exit operation to take place.
  • All threads that are not daemon threads have died, either by returning from the call to the run method or by throwing an exception that propagates beyond the run method.
 
K

kneitzel

Gast
Also ist dies, wie ich vermutet habe, nicht möglich und ich müsste in meiner Klasse Batterie eine weitere öffentliche Variable bzw. hier den Array deklarieren, um dann den Array über die main-Methode ausgeben zu können?
Habe ich das richtig verstanden?
Also Du hast eine Klasse Batterie (Bitte Klassen mit einem großen Buchstaben beginnen) mit den Eigenschaften.

Wieso baust Du dann ein Object Array und kein BatterieArray?


Dann kannst Du in BatterieTest das Array Batterie[2] deklarieren und der 0 und 1 Position eine neu erstellte Batterie zuweisen.
 
K

kneitzel

Gast
Ich dachte ein Array beginnt immer mit dem Datentyp und da ich verschiedene Datentypen habe müsste ich hier "Object" nehmen.
Das erste ist ja auch richtig. Aber Datentyp kann auch eine konkrete Klasse sein. Und Du hast doch extra eine Klasse Batterie erzeugt. Und Du willst Batterien in dem Array speichern. Also nimmst Du Batterie als Typ. Also z.B. sowas wie:
Batterie[] batterien = new Battery[2];
 

Schlokopp

Mitglied
Ok das macht Sinn! Aber so habe ich ja jetzt nur eine Variable die ich im Array bsp. batterien [0] speichern kann, richtig?
und wie greift meine Ausgabemethode dann darauf zurück?
 
K

kneitzel

Gast
So wie Du doch immer auf Methoden zugreifst. Wenn Du einen String hast: wie greifst Du dann auf eine Methode zu? Also Du hast einen String text und willst das erste Zeichen (charAt Methode) aufrufen:

Java:
String text = "Hallo";
// Wie rufe ich auf text nun charAt(0) auf?

Das kannst Du 1:1 auf Deine Batterie übertragen. Du hast statt String eine Batterie. Und Batterie hat eine Methode ausgabe.
 
M

Mart

Gast
Ok das macht Sinn! Aber so habe ich ja jetzt nur eine Variable die ich im Array bsp. batterien [0] speichern kann, richtig?
und wie greift meine Ausgabemethode dann darauf zurück?
naja zugriff auf batteryArray[0] liefert dir (falls nicht null) eine Batterie und dann kannst du die von mir genannten Mehtoden ( die du noch bauen musst :D ) nutzen zb du fügst die
print() methode ein bei deiner Batterie ein
diese Methode hat dann zb diese Zeile an Code
Java:
System.out.println("name: "+ this.name + " alter: "+ this.year+ "usw ... ");

PS: falls du nicht weist was this ist uswsolltest du das sagen
 
K

kneitzel

Gast
Die Methode ausgabe hat er ja schon in Batterie :) :
Java:
public void ausgabe(){
    System.out.println("Name:"+this.name+",Typ:"+this.typ+",Spannung:"+this.spannung+",Kapazität:"+this.kapazität);
}
 

Robertop

Bekanntes Mitglied
Eigentlich musst du unten, wo du "typ1.ausgabe()" aufrufst nur stattdessen ausgabe von dem zweiten Eintrag im BatterieArray aufrufen:
Java:
batterien[1].ausgabe();
Geht aber halt nur, wenn es ein Batterie-Array anstatt ein Object-Array ist. ^^
 
M

Mart

Gast
Die Methode ausgabe hat er ja schon in Batterie :) :
Java:
public void ausgabe(){
    System.out.println("Name:"+this.name+",Typ:"+this.typ+",Spannung:"+this.spannung+",Kapazität:"+this.kapazität);
}
der beitrag wurde leider im nachhinein editiert am anfang war das noch nicht da

hab das nicht gelesen ich schau mir immer nur die neuesten sachen an
 
M

Mart

Gast
Java:
public String name;
public String typ;
public double spannung;
public double kapazität;
du hast diese Public gemacht
und hast die Getter und Setter Methoden
dh du kannst deine Attribute private machen weil du eh deine Getter und Setter hast

( ist nur um dich wo hin zu schmeißen wo du noch nicht drüber gedacht hast um etwas zu lernen .. Zwang ist nicht da)
 

JensXF

Mitglied
Du kannst auch toString überschreiben in deiner BatterieKlasse.
Java:
@Override
    public String toString() {
        return this.name + " " + this.typ + " " + this.spannung + " " + this.kapazitaet;
    }

In der Main währe die Ausgabe dann so
Java:
System.out.println(arrayBatterie[1].toString());
 
K

kneitzel

Gast
Du kannst auch toString überschreiben in deiner BatterieKlasse.
Java:
@Override
    public String toString() {
        return this.name + " " + this.typ + " " + this.spannung + " " + this.kapazitaet;
    }

In der Main währe die Ausgabe dann so
Java:
System.out.println(arrayBatterie[1].toString());
Der Aufruf von toString() ist dabei auch nicht einmal notwendig. println nimmt auch ein Object und ruft darauf dann ein toString() auf (Über den Umweg String.valueOf).

Edit: Es reicht also einfach ein: System.out.println(arrayBatterie[1]);
 
M

Mart

Gast
Der Aufruf von toString() ist dabei auch nicht einmal notwendig. println nimmt auch ein Object und ruft darauf dann ein toString() auf (Über den Umweg String.valueOf).
ich persönlich finde toString() überschreibne eher verwirrend... es war für mich immer "printl mal die Referenz aus" ( bzw wert bie Simplen datentypen) ... keine ahnung ob das so normal ist dass man da immer die tostring überschreibt
 

Schlokopp

Mitglied
Danke erst mal für die viele Hilfe! Aber irgendetwas mache ich noch falsch der compiler will mir das noch nicht ausgeben!

public class batterie_test
{
public static void main(String[] args) {
batterie typ1=new batterie("AA-Mignon", "NiCd",1.2,2000);
batterie[] typ2=new batterie[2];

batterie[0]=""AA-Mignon","NiCd",1.2,2000";//typ2[0]??

typ1.ausgabe();
batterie[0].ausgabe(); //typ2[0]?


}
}
 
K

kneitzel

Gast
Du musst natürlich bei der Zuweisung hier:
batterie[0]=""AA-Mignon","NiCd",1.2,2000";//typ2[0]??
eine Batterie-Instanz zuweisen.

In der zeile drüber erzeugst Du eine Instanz:
new batterie("AA-Mignon", "NiCd",1.2,2000)
 

JensXF

Mitglied
Danke erst mal für die viele Hilfe! Aber irgendetwas mache ich noch falsch der compiler will mir das noch nicht ausgeben!

public class batterie_test
{
public static void main(String[] args) {
batterie typ1=new batterie("AA-Mignon", "NiCd",1.2,2000);
batterie[] typ2=new batterie[2];

batterie[0]=""AA-Mignon","NiCd",1.2,2000";//typ2[0]??

typ1.ausgabe();
batterie[0].ausgabe(); //typ2[0]?


}
}

Java:
        //Erzeuge Array vom Typ Batterie
        Batterie[] arrayBatterie = new Batterie[2];

        //Erzeuge zwei Objekte
        Batterie aaMignon = new Batterie("AA-Mignon", "NiCd", 1.2, 2000);
        Batterie aaaMicro = new Batterie("AAA-Micro", "NiMH", 1.2, 950);
        
        //Weise Objekte dem Array zu
        arrayBatterie[0] = aaMignon;
        arrayBatterie[1] = aaaMicro;
 

syntaxError404

Mitglied
ich persönlich finde toString() überschreibne eher verwirrend... es war für mich immer "printl mal die Referenz aus" ( bzw wert bie Simplen datentypen) ... keine ahnung ob das so normal ist dass man da immer die tostring überschreibt
Mir wurde in meiner Uni beigebracht, dass toString() zu überschreiben "schöner" ist. Aber solange der Methodenname klar und deutlich ist, erfüllt es seinen Zweck :)
 
K

kneitzel

Gast
Mir wurde in meiner Uni beigebracht, dass toString() zu überschreiben "schöner" ist. Aber solange der Methodenname klar und deutlich ist, erfüllt es seinen Zweck :)

toString() zu überschreiben ist in meinen Augen gut fürs Logging / Tracing. Ich würde es aber nicht verwenden, um eine Darstellung nach aussen zu dem Kunden zu erstellen.

Als Entwickler entwickle ich z.B. jetzt eine Batterie mit Eigenschaften / einem Verhalten. Wie diese später dargestellt wird, ist für mich an der Stelle erst einmal uninteressant. Die Klasse Batterie ist unabhängig davon, wie diese im Detail angezeigt wird. Das kann in Textform sein, aber evtl. ja auch eine grafische Darstellung. Oder womöglich mehrere mögliche Darstellungen.

Das wird auch bei den üblichen Pattern deutlich: Da wird dann z.B. zwischen Model, View und Controller (MVC Pattern) unterschieden. Batterie wäre Model. Wie das später in der View dargestellt wird, ist für das Model uninteressant. Das kann man auch exemplarisch an der Darstellung einer Zahl deutlich machen:
Da ist dann die Zahl 2000 gespeichert. Aber wie die dann in der Applikation dargestellt wird, kann sich ja verändern. Evtl. will es jemand mit Tausender-Punkt darstellen: "2.000". Oder vielleicht will es jemand mit Exponent, dann wäre es "2E3" oder oder oder ...

Das wäre hier meine Sicht auf das Thema.
 

Schlokopp

Mitglied
Mein Antwort hat jetzt zwar ein paar Tage gedauert, aber ich möchte mich nochmal für die Hilfe bedanken! Ohne diese wäre ich da nicht weitergekommen!
 

temi

Top Contributor
Mir wurde in meiner Uni beigebracht, dass toString() zu überschreiben "schöner" ist.
Man sollte immer toString() überschreiben, so dass man eine sinnvolle (menschenlesbare) Repräsentation der Instanz erhält, aber, wie @kneitzel schon geschrieben hat, wird diese in erster Linie für Loggingzwecke verwendet.

Die gewünschte Ausgabe für den Benutzer der Software kann sich ja, je nach Kontext, ändern, so hast du in einem Fall vielleicht nur eine Liste mit den verfügbaren Batterien, für die du nur den Namen anzeigen willst. Und bei Auswahl einer Batterie, werden auch noch die Details angezeigt. Das lässt sich mit toString() nicht sinnvoll lösen, weshalb man dafür die Getter verwendet.

Edit: Ups, war schon was älter, das Thema... :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
S Werte aus Array auslesen über Variableninhalt Java Basics - Anfänger-Themen 2
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
Binary.Coder Array über println ausgeben Java Basics - Anfänger-Themen 18
J Array Größe über Kommandozeile eingeben Java Basics - Anfänger-Themen 3
S Einfaches int Array gibt über System.out.println merkwürden Wert aus Java Basics - Anfänger-Themen 9
S Preisberechnung über Array Java Basics - Anfänger-Themen 32
J Rekursion über int und array gibt zu wenige Werte zurück Java Basics - Anfänger-Themen 5
J array über generische arraylist Java Basics - Anfänger-Themen 7
J Zugriff auf ein Array über eine andere Klasse Java Basics - Anfänger-Themen 7
B Abzählreim über ein Array Java Basics - Anfänger-Themen 30
D Array über die Kommando zeile eingeben Java Basics - Anfänger-Themen 5
F Array deklarieren und über Methode aufrufen Java Basics - Anfänger-Themen 13
G Zweidimensinales String array über for Schleife beschreiben Java Basics - Anfänger-Themen 20
T Array über Klasse instanziieren Java Basics - Anfänger-Themen 5
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben