www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Java" - String vergleichen mit Stack
String vergleichen mit Stack < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

String vergleichen mit Stack: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 00:50 So 05.12.2010
Autor: Fatih17

Hallo,

ich habe einen Stack voll mit Objekten (Notebooks). Jetzt kann der Benutzer die Notebooks per Eingabe nach Marke filtern.

Leider weiß ich nicht welchen Befehl ich dazu verwenden soll.

Die Objekte bestehen aus verschiedenen Strings und Integern und es soll halt geschaut werden ob die Eingabe mit den Marken der Objekte übereinstimmt, falls es welche gibt, sollen diese angezigt werden.

Vielen Dank im voraus
Fatih         

        
Bezug
String vergleichen mit Stack: Antwort
Status: (Antwort) fertig Status 
Datum: 03:57 So 05.12.2010
Autor: felixf

Moin Fatih!

> ich habe einen Stack voll mit Objekten (Notebooks). Jetzt
> kann der Benutzer die Notebooks per Eingabe nach Marke
> filtern.
>
> Leider weiß ich nicht welchen Befehl ich dazu verwenden
> soll.

Nun, du wirst wohl eine Reihe von Befehlen verwenden muessen. Am besten schreib dir eine Funktion dafuer.

> Die Objekte bestehen aus verschiedenen Strings und Integern
> und es soll halt geschaut werden ob die Eingabe mit den
> Marken der Objekte übereinstimmt, falls es welche gibt,
> sollen diese angezigt werden.

Daraus wird weder klar, wie die Datenstruktur genau aussieht, noch, wie die Objekte genau aussehen. Insofern kann ich dir nicht wirklich helfen.

Schreibe eine Funktion, die alle Elemente auf dem Stack durchlaeuft. Fuer jedes Element vergleichst du die Marken der Objekte mit der Eingabe uebereinstimmt. Findest du etwas, gibst du das Objekt aus.

(Ja, das ist nicht viel mehr als das, was du selber schon schriebst. Ohne weitere Informationen deinerseits koennen wir aber auch nichts genaueres sagen...)

LG Felix


Bezug
                
Bezug
String vergleichen mit Stack: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:55 So 05.12.2010
Autor: Fatih17

Hallo nochmal,

wenn ich den ganzen Code reinschreiben würde, wäre das zu viel, deswegen schreibe ich nur den Teil rein, der Wichtig ist.

Folgender Stack wird genutz:

Stack <Object> handys =new Stack <Object>();


Jetzt werden Objekte eingefügt:


Handy L=new Handy(123456,"Samsung","Galaxy S","Android","schwarz",8,8,1000,256);

Handy K=new Handy(123456,"Apple","iPHONE 4","MacOs","schwarz",5,16,1000,256);

Handy I=new Handy(123456,"Apple","iPHONE 3GS","MacOs","weiß",3,16,500,128);

handys.push(I);
handys.push(K);
handys.push(L);


Und nun die Eingabe des Benutzers:


System.out.println("Welche marke?:");
String eingabe4= In.readWord();
if(eingabe4.equals(handys.elements()))

Hier soll bei Eingabe von IPHONE die beiden IPHONE Objekte ausgegeben werden

Bezug
                        
Bezug
String vergleichen mit Stack: Antwort
Status: (Antwort) fertig Status 
Datum: 17:24 So 05.12.2010
Autor: Pille456

Hi!

Jede Stack-Implementierung beherrscht an sich die push() und pop() Operation. Je nach dem ob Du nun eine eigene / vom Lehrer vorgegebene / was auch immer benutzt oder die Stack-Implementierung aus der API nutzt, variieren die Befehle etwas, aber der Grundaufbau ist gleich:

sucheImStack(alterStack, suchString)
- kopiere alterStack in tempStack
- erschaffe RückgabeStack
- solange tempStack nicht leer
   - if oberstesElement auf tempStack == suchString
        - RückgabeStack.push(oberstesElement)
    -tempStack.pop()
- return RückgabeStack

Du kannst jede beliebige Datenstruktur nehmen, um die entsprechenden Elemente, die die Suchanfrage erfüllen, abzuspeichern / zurückzugeben. Ich habe oben einfach auch mal einen Stack genommen.
Da Java mit Referenzen (Call by Value vs Call by Reference) arbeitet musst du "alterStack" kopieren, damit du die Handys nicht durch den push() Befehle löscht. Genauso musst du aufpassen, dass du Strings nicht per "==" vergleichen kannst. Schau hierzu dann auch mal in die Java API bzw. nach String.equals().

Hoffe das hilft dir weiter



P.S. Den API Eintrag findest du []hier Der "peek" Befehl könnte auch ganz nützlich für dich sein ;)

Bezug
                                
Bezug
String vergleichen mit Stack: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:34 So 05.12.2010
Autor: felixf

Moin,

> Jede Stack-Implementierung beherrscht an sich die push()
> und pop() Operation. Je nach dem ob Du nun eine eigene /
> vom Lehrer vorgegebene / was auch immer benutzt oder die
> Stack-Implementierung aus der API nutzt, variieren die
> Befehle etwas, aber der Grundaufbau ist gleich:
>  
> sucheImStack(alterStack, suchString)
>  - kopiere alterStack in tempStack
>  - erschaffe RückgabeStack
>  - solange tempStack nicht leer
>     - if oberstesElement auf tempStack == suchString
>          - RückgabeStack.push(oberstesElement)
>      -tempStack.pop()
>  - return RückgabeStack

sowas sollte man nur bei einer sehr, sehr schlechten Stack-Implementation machen muessen.

Die Stack<>-Implementation aus der API implementiert etwa java.util.AbstractList, womit man die Elemente einfach enumerieren kann.

> Genauso musst du aufpassen, dass du Strings nicht per "=="
> vergleichen kannst. Schau hierzu dann auch mal in die Java
> API bzw. nach String.equals().

Das hilft bei dieser Aufgabe ebenfalls nicht, da man nach Teilstrings suchen muss (unabhaengig von Gross- und Kleinschreibung).

LG Felix


Bezug
                                        
Bezug
String vergleichen mit Stack: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:51 So 05.12.2010
Autor: Pille456

Laufzeittechnisch sehe ich keinen da keinen Unterschied, beide arbeiten mit O(n) Zeit, weil man sowieso jedes Objekt betrachten muss.
Es ist lediglich eine Designfrage, was man schöner findet und eventuell was momentan einfacher (zu implementieren) ist. Wenn es eine Schulaufgabe ist, denke ich würde der Lehrer eher sowas sehen wollen, wie meinen Vorschlag, da es ja um den Gebrauch von einem Stack geht.

Der versierte Java-Programmierer würde wahrscheinlich eher zu Deiner Methode greifen, weil sie einfacher zu implementieren ist, wahrscheinlich bzgl. einiger konstanter Faktoren schneller wäre und die Richtigkeit der Implementierung sich direkt aus "der Richtigkeit" der Funkionen der API ableitet.

Gut das mit den Teilstrings ist mir durchgegangen, das tut mir Leid. Dann muss man halt mal in der Java API schauen, welche netten Methoden es noch für Strings gibt. Das sollte nicht so schwer sein ;-)

Gruß
Pille

Bezug
                                                
Bezug
String vergleichen mit Stack: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:19 So 05.12.2010
Autor: felixf

Moin Pille,

> Laufzeittechnisch sehe ich keinen da keinen Unterschied,
> beide arbeiten mit O(n) Zeit, weil man sowieso jedes Objekt
> betrachten muss.

von der asymptotischen Laufzeit her macht es keinen Unterschied, da hast du Recht.

Von der praktischen Laufzeit macht es jedoch einen grossen Unterschied. Und vom Speicherverbrauch ebenfalls!

> Wenn es eine Schulaufgabe ist, denke ich würde der Lehrer
> eher sowas sehen wollen, wie meinen Vorschlag, da es ja um
> den Gebrauch von einem Stack geht.

Dann muss man allerdings erstmal eine Kopie vom Stack anlegen. Wenn man nur pushen und poppen kann, ist das nicht mehr so ganz nicht-trivial.

> Der versierte Java-Programmierer würde wahrscheinlich eher
> zu Deiner Methode greifen, weil sie einfacher zu
> implementieren ist, wahrscheinlich bzgl. einiger konstanter
> Faktoren schneller wäre und die Richtigkeit der

Nicht nur wahrscheinlich. Es ist schneller.

Es muss zusaetzlich Speicher allokiert werden (langsam), es wird der Stack erstmal kopiert, und dann wird der Stack durchlaufen.

> Gut das mit den Teilstrings ist mir durchgegangen, das tut
> mir Leid. Dann muss man halt mal in der Java API schauen,
> welche netten Methoden es noch für Strings gibt. Das
> sollte nicht so schwer sein ;-)

Das duerfte recht einfach sein :) Die Java-API ist so ueberladen dass es dafuer sicher etwas passendes gibt ;-)

LG Felix


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


^ Seitenanfang ^
www.vorhilfe.de