www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Java" - setter-Methode i.V.m. Array
setter-Methode i.V.m. Array < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

setter-Methode i.V.m. Array: Hilfestellung, Tipp, Idee
Status: (Frage) beantwortet Status 
Datum: 11:28 Mo 22.10.2012
Autor: Marcel08

Hallo zusammen!


Ich hätte eine Frage zu Arrays in Java. Und zwar würde ich gerne wissen, wie man eine setter-Methode mit einem String-Array füttern kann. Ausgangslage soll dabei eine getter-Methode sein, die ein String-Array zurückgeben soll. Das Ganze habe ich bisher wie folgt aufgebaut:



package test;

public class Zutaten {

private String[] zutat;

public String[] getZutat() {

return zutat;
}

public void setZutat(String[] zutat) {

this.zutat = zutat;

}

}




Probleme habe ich nun bei der Formulierung der main-Klasse. Nach meiner Idee sollen die einzelnen Zutaten durch die Verwendung einer Schleife nacheinander an die setter-Methode der Klasse Zutaten übergeben und im entsprechenden Attribut gepeichert werden. Anschließend sollen durch einen Aufruf der getter-Methode in der main-Klasse sämtliche Zutaten, die zuvor im Attribut gepeichert wurden, ausgegeben werden. Dabei bereitet mir vor allem die Übergabe des Arrays an die setter-Methode einige Schwierigkeiten. Als Anfänger gelingt es mir nicht, den unteren Quellcode kompilierend zu fertigen. Über hilfreiche Tipps würde ich mich freuen; vielen Dank!


package test;

public class Main {

public static void main(String[] args) {

Zutaten[] zutat = new Zutaten[2];

zutat[0] = "Mehl";

zutat[1] = "Zucker";

for (int i = 1; i < zutat.length; i++) {

zutat[i].setZutat(args);

}

System.out.println("Zutaten: " + zutat[0].getZutat() + ", "
+ zutat[1].getZutat());

}

}






Viele Grüße, Marcel

        
Bezug
setter-Methode i.V.m. Array: Antwort
Status: (Antwort) fertig Status 
Datum: 19:19 Mo 22.10.2012
Autor: rainerS

Hallo!


> zutat[0] = "Mehl";

Wie soll das gehen? Rechts steht ein Ausdruck vom Typ String, links vom Type Zutaten.

Ich denke, du meinst

1: public static void main(String[] args) {
2:   Zutaten z = new Zutaten();
3:   z.setZutat(args);
4: }


Viele Grüße
   Rainer



Bezug
                
Bezug
setter-Methode i.V.m. Array: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:06 Mo 22.10.2012
Autor: Marcel08

Hallo!


Zunächst einmal vielen Dank für die Antwort.



> Hallo!
>  
>
> > zutat[0] = "Mehl";
>  
> Wie soll das gehen? Rechts steht ein Ausdruck vom Typ
> String, links vom Type Zutaten.


Ja, mir ist der Fehler bewusst. Eclipse meldet an dieser Stelle auch einen Kompilierungsfehler. Ich wusste aber nicht, wie ich meine Idee anders darstellen sollte.



> Ich denke, du meinst
>  
>
1: public static void main(String[] args) {
2: >    Zutaten z = new Zutaten();
3: >    z.setZutat(args);
4: >  }



Hier wird dann ja aber kein Array verwendet. Wie gesagt, die feste Ausgangslage des Problems ist die vorhandene getter-Methode

public String[] getZutat() {return zutat;}


in der Klasse Zutaten. Wenn ich das Ganze dann rückwärts betrachte, brauche ich ja zunächst ein Attribut

private String[] zutat;


in dem das Array durch die setter-Methode abgespeichert wird. Die getter-Methode soll dann den Inhalt des Attributs an den Methodenaufruf in der main-Klasse senden. Diesbezüglich brauche ich dann eine setter-Methode


public void setZutat(String[] zutat) {

this.zutat = zutat;

}



die den ihr übergebenen Inhalt im Attribut ablegt. Das bedeutet aber, dass sie zuvor den Parameter

String[] zutat


übergeben bekommen muss. Daher würde ich in der Klasse Main zunächst die folgende Objekterzeugung durchführen

Zutaten[] zutat = new Zutaten[2];.


Eclipse gibt dabei auch grünes Licht (oder zumindest kein rotes). An dieser Stelle setzt dann mein Problem an. Diesbezüglich beschäftigen mich momentan die folgenden Fragen:

(1.) Wie kann ich nun den Arraypositionen [0] und [1] beispielsweise die Zutaten Mehl und Zucker zuweisen?

(2.) Wie kann ich diese beiden Zutaten dann der setter-Methode aus der Klasse Zutaten übergeben?

(3.) Abschließend würde ich gerne durch den Aufruf der setter-Methode in der Klasse Main die beiden Zutaten im Ausgabefenster angezeigt bekommen.



Viele Grüße, Marcel


Bezug
                        
Bezug
setter-Methode i.V.m. Array: Antwort
Status: (Antwort) fertig Status 
Datum: 13:46 Di 23.10.2012
Autor: WolfgangF

Hallo Marcel,

also du scheinst hier etwas durcheinander zu bringen.
Du solltest in deiner Main Applikation nicht versuchen wieder ein Array zu benutzen, das möchtest du ja innerhalt deiner Zutaten Klasse abbilden und kapseln.

Anbei mal ein Vorschlag wie man das realisieren kann. Ein Vorschlag ist mit ArrayListen und mit Array direkt. Das Problem mit dem Array direkt habe ich auch beschrieben, damit du siehst was da schief geht.

Zuerst einmal die Main Klasse, die die ganzen Aufrufe enthält:

//=============================================================================
1:
2: public class Main {
3:
4:   public static void main(String[] args) {
5:     ZutatenListe ZListe = new ZutatenListe();
6:
7:     ZListe.setZutaten("Mehl");
8:     ZListe.setZutaten("Eier");
9:
10:     String[] ZStringArray = ZListe.getZutaten();
11:
12:     for(int i=0; i < ZStringArray.length; i++) {
13:         System.out.println(ZStringArray[i]);
14:     }
15:
16:     ZutatenArray ZArray = new ZutatenArray();
17:
18:     ZArray.setZutaten("Butter");
19:     ZArray.setZutaten("Milch");
20:
21:     String[] ZArrayStringArray = ZArray.getZutaten();
22:
23:     for(int i=0; i < ZArrayStringArray.length; i++) {
24:       if(ZArrayStringArray[i] != null)
25:         System.out.println(ZArrayStringArray[i]);
26:     }
27:
28:   }
29:
30: }

//=============================================================================
1:
2: import  java.util.ArrayList;
3:
4: public  class  ZutatenListe  {
5:     //  Dynamische  Struktur.  Vorteil  gegenüber  Array  ist,  das  man  vorher  die
6:     //  Größe  noch  nicht  wissen  muss.
7:     private  ArrayList<String>  meineZutaten  =  new  ArrayList<String>();
8:     
9:     public  String[]  getZutaten()  {
10:         //  Generiert  ein  Array  aus  der  ArrayListe.
11:         String[]  itemArray  =  new  String[this.meineZutaten.size()];
12:
13:         return  this.meineZutaten.toArray(itemArray);
14:     }
15:     
16:     public  void  setZutaten(String  Zutat)  {
17:         //  Ein  weiteres  Element  in  die  Liste  hinzufügen.
18:         this.meineZutaten.add(Zutat);
19:     }
20: }

//=============================================================================
1:
2: public  class  ZutatenArray  {
3:     private  String[]  meineZutaten  =  new  String[100];
4:     private  int  counter  =  0;
5:     
6:     public  String[]  getZutaten()  {
7:         return  this.meineZutaten;
8:     }
9:     
10:     public  void  setZutaten(String  Zutat)  {
11:         //  Zutat  ins  Array  hinzufügen.
12:         this.meineZutaten[this.counter]  =  Zutat;
13:         //  Merken  an  welcher  Stelle  das  letzte  mal  etwas  hinzufgefügt  wurde.
14:         this.counter++;
15:     }
16: }

//=============================================================================

Liebe Grüße, Wolfgang.

Bezug
                                
Bezug
setter-Methode i.V.m. Array: Vielen Dank!
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:45 Di 23.10.2012
Autor: Marcel08

Hallo WolfgangF!

Vielen Dank für deine ausführliche Antwort. Das hat mir sehr geholfen, sodass meine Frage nun beantwortet ist.


Viele Grüße, Marcel

Bezug
        
Bezug
setter-Methode i.V.m. Array: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 23:36 Mo 22.10.2012
Autor: Marcel08

Hallo nochmal!


Ich versuche es noch einmal anders zu erklären. Der folgende Code kompiliert und liefert auch das gewünschte Ergebnis:

[Dateianhang nicht öffentlich]

[Dateianhang nicht öffentlich]


Allerdings macht diesbezüglich die Klasse Zutaten natürlich so keinen Sinn, da sie überhaupt nicht verwendet wird. Wie kann man nun aber die Klasse Zutaten und deren Methoden sinnvoll miteinbeziehen und ggf. erweitern? Diesbezüglich sollte der Array-Charakter der getter-Methode

public String[] get Zutat() {return zutat;}


beibehalten werden. Nochmals vielen Dank!



Viele Grüße, Marcel

Dateianhänge:
Anhang Nr. 1 (Typ: PNG) [nicht öffentlich]
Anhang Nr. 2 (Typ: PNG) [nicht öffentlich]
Bezug
                
Bezug
setter-Methode i.V.m. Array: Antwort
Status: (Antwort) fertig Status 
Datum: 02:17 Di 23.10.2012
Autor: Event_Horizon

Hallo!

Irgendwie ist wohl nicht ganz klar, wo das Problem ist. Ausgehend von deinem Beispiel mit den Strings würde ich das so umbauen:

Zutaten[] z=new Zutaten[2]
z[0]=new Zutaten()
z[0].SetZutat("Mehl")
z[1]=new Zutaten()
z[1].SetZutat("Zucker")


system.out.println( z[0].GetZutat() )

Der unterschied liegt nur darin, daß man die String-Klasse direkt mit einem Wert initialisieren kann, während man deine Klasse erst mal initialisiert, und in einer zweiten Anweisung den Wert setzt. Ähnliches gilt bei der Ausgabe. Der Aufruf der Stringklasse selbst fürht dazu, daß sie ihren Wert ausgibt, deine Klasse hat dazu aber ne Getter-Methode.


Bezug
                        
Bezug
setter-Methode i.V.m. Array: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 11:27 Di 23.10.2012
Autor: Marcel08

Hallo!


Nochmals vielen Dank für die Beteiligung.


> Hallo!
>  
> Irgendwie ist wohl nicht ganz klar, wo das Problem ist.
> Ausgehend von deinem Beispiel mit den Strings würde ich
> das so umbauen:
>  
> Zutaten[] z=new Zutaten[2]
>  z[0]=new Zutaten()
>  z[0].SetZutat("Mehl")
>  z[1]=new Zutaten()
>  z[1].SetZutat("Zucker")
>  
>
> system.out.println( z[0].GetZutat() )


Wenn ich das so versuche zu realisieren, erhalte ich die folgenden Kompilierungsfehler:

[Dateianhang nicht öffentlich]

[Dateianhang nicht öffentlich]


Eclipse möchte dann, dass ich in der Parameterliste der setter-Methode der Klasse Zutaten String[] zutat in String string umändere. Dann müsste ich aber auch das Attribut und damit auch die getter-Methode abändern. Der Rückgabewert String[] der getter-Methode soll aber nicht verändert werden.



> Der unterschied liegt nur darin, daß man die String-Klasse
> direkt mit einem Wert initialisieren kann, während man
> deine Klasse erst mal initialisiert, und in einer zweiten
> Anweisung den Wert setzt. Ähnliches gilt bei der Ausgabe.
> Der Aufruf der Stringklasse selbst fürht dazu, daß sie
> ihren Wert ausgibt, deine Klasse hat dazu aber ne
> Getter-Methode.


Ja, dessen bin ich mir bewusst.



Viele Grüße, Marcel

Dateianhänge:
Anhang Nr. 1 (Typ: PNG) [nicht öffentlich]
Anhang Nr. 2 (Typ: PNG) [nicht öffentlich]
Bezug
                                
Bezug
setter-Methode i.V.m. Array: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:46 Di 23.10.2012
Autor: Marcel08

Das Anliegen hat sich erledigt, vielen Dank!

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]