![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |||
|
Neuer Benutzer
byte
Registriert seit: 16.05.2012
Fachbeiträge: 15
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
Hallo
ich möchte ein bisschen Java üben und habe mir folgende Übungsaufgabe rausgesucht. Gegeben ist ein String mit Wörtern, die durch ein oder mehrere Leerzeichen voneinander getrennt sind (Wort = beliebige Zeichenfolge ohne Leerzeichen). Geben Sie eine Java-Methode woerterListe an, die aus einem solchen, als Parameter woerter übergebenen String die einzelnen Wörter extrahiert und alle diese Wörter als Liste zurückliefert: LinkedList<String> woerterListe(String woerter) { ... } mein problem ist nun das der int anfang, fest sitzt zwischen "Hallo" und "du". ich weiß wirklich nicht, wie ich auf das nächste wort komm um es zu separieren. gibt es vllt. auch eine elegantere Lösung, als so wie ich es probiere?
|
||
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 02.09.2009
Fachbeiträge: 6.073
Abgegebene Danke: 24
Erhielt 1.224 Danke für 1.208 Beiträge
|
Musst du das so "manuell" machen? Die Klasse String kennt ne Methode split() mit der du das wunderbar lösen könntest.
__________________
jCSV - Simple CSV library for Java - http://code.google.com/p/jcsv/ Asteroid Impact - Echtzeit-Strategie-Browsergame |
|
|
|
| #5 (permalink) | ||||||||||||||||
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 02.09.2009
Fachbeiträge: 6.073
Abgegebene Danke: 24
Erhielt 1.224 Danke für 1.208 Beiträge
|
Wenn schon vorsagen dann aber auch richtig
![]()
__________________
jCSV - Simple CSV library for Java - http://code.google.com/p/jcsv/ Asteroid Impact - Echtzeit-Strategie-Browsergame |
|||||||||||||||
|
|
|
|||||||||||||||
| #6 (permalink) | |
|
Neuer Benutzer
byte
Themenstarter
Registriert seit: 16.05.2012
Fachbeiträge: 15
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
mit Index(Leerzeichen) + 1 hab ich mir auch schon gedacht, dann bekomm ich aber eine
(java.lang.StringIndexOutOfBoundsException: String index out of range: -1) Exception. wenn ich split() benutzt muss ich den string woerter zu String[] woerter setzen, weil die einzelnen Worter ja dann in Arrays gespeichert werden. Aber der Kopf der methode ist vorgegeben. Kann es sein das split(" ") gar nicht funktionieren würde, weil es eine Reguläre Expression sein müsste? |
|
|
|
| #7 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 21.02.2012
Fachbeiträge: 1.614
Abgegebene Danke: 315
Erhielt 230 Danke für 223 Beiträge
|
String.split arbeitet mit Pattern und Matcher, du kannst dir das ja mal bei grepcode.com anschauen: GrepCode: java.util.regex.Pattern (.java) - Class - Source Code View
|
|
|
|
| #8 (permalink) | |||
|
Stammbenutzer
Halbes Megabyte
Registriert seit: 26.10.2009
Fachbeiträge: 606
Abgegebene Danke: 18
Erhielt 83 Danke für 80 Beiträge
|
Hmm ja, wenn die ganzen Leerstrings stören, dann muss man es noch anpassen, hast recht:
|
||
|
|
|
| Danke sagt: |
Börmt-die-Buse (18.06.2012)
|
| #9 (permalink) | |||||||||||||||||||
|
Neuer Benutzer
byte
Themenstarter
Registriert seit: 16.05.2012
Fachbeiträge: 15
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
![]() würde trotzdem noch gerne wissen, was ich bei meinem Code ändern müsste damit es funktioniert.
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #12 (permalink) | |
|
Stammbenutzer
Halbes Megabyte
Registriert seit: 26.10.2009
Fachbeiträge: 606
Abgegebene Danke: 18
Erhielt 83 Danke für 80 Beiträge
|
Für deinen originalen Code schaue dir mal diese Version von indexOf an:
String (Java Platform SE 6) |
|
|
|
| #13 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 22.09.2011
Fachbeiträge: 237
Abgegebene Danke: 24
Erhielt 16 Danke für 16 Beiträge
|
du solltest wirklich mit split arbeiten
zu deinem Problem: anfang = woerter.indexOf(" ") sucht immer und immer wieder bei jedem Durchang der Schleife nach dem ersten vorkommenden Leerzeichen, und das steckt wohl zwischen "Hallo" und "du". Solltest also "woerter" nach dem Zuweisen von "hilf" entsprechend anpassen ... |
|
|
|
| #14 (permalink) | |||||||||||||||||||||||||
|
Stammbenutzer
Megabyte
Registriert seit: 21.02.2012
Fachbeiträge: 1.614
Abgegebene Danke: 315
Erhielt 230 Danke für 223 Beiträge
|
Jetzt noch kurz zur Erklärung Kommentare:
Also drei while-Schleifen. Klar würde das auf mit for-Schleifen funktionieren:
Aber das ist mehr oder weniger Geschmackssache. Die einen bevorzugen das, die anderen das.. Grüße! |
||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||
| #17 (permalink) | |||||
|
Stammbenutzer
Megabyte
Registriert seit: 21.02.2012
Fachbeiträge: 1.614
Abgegebene Danke: 315
Erhielt 230 Danke für 223 Beiträge
|
...das wäre ja nur ein Zeichen/Integer...:
Oder:
Freilich, ganz ohne zumindest den String-Konstruktor und .charAt geht es nicht... |
||||
|
|
|
| #18 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 21.02.2012
Fachbeiträge: 1.614
Abgegebene Danke: 315
Erhielt 230 Danke für 223 Beiträge
|
ok, hab mal nachgesehen, was bei .substring passiert:
GrepCode: java.lang.String (.java) - Class - Source Code View http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.%3Cinit%3E%28int%2Cint%2Cchar[]%29 Es wird ein package private constructor aufgerufen, der mit demselben char[] (Referenz wird kopiert) ein neues String-Objekt erstellt/instantiiert. Das geht ja, weil sich das char[] nicht ändern darf. Es werden also keine Zeichen kopiert. Damit sollte .substring schneller sein, als ein neues char[] zu erstellen Geändert von iKnwWhtUDidLast (20.06.2012 um 13:21 Uhr) |
|
|
|
| #19 (permalink) | |||
|
Stammbenutzer
Kilobyte
Registriert seit: 20.06.2012
Fachbeiträge: 246
Abgegebene Danke: 2
Erhielt 35 Danke für 35 Beiträge
|
Noch eine Lösung wäre:
|
||
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| System.out auf files umlenken in log4j.xml | jmar83 | Allgemeine Java-Themen | 4 | 18.01.2011 17:45 |
| JSF Custom Component ValueExpression wird nur als String erkannt | JackBuuBuu | Web Tier | 2 | 18.12.2009 09:31 |
| irc bot | noch nicht geregt | Netzwerkprogrammierung | 9 | 08.07.2006 11:28 |
| JList mit Mausklick auf einen JButton scrollen | Negr0 | Allgemeine Java-Themen | 28 | 31.03.2005 02:17 |
| schwieriger String für StringTokenizer, wie am Besten ? | spidermobile | Java Basics - Anfänger-Themen | 8 | 30.03.2005 19:36 |
| Lesezeichen |
|
|