Hackerboard WikiHaboBlog

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

StringTokenizer JAVA

Diskussion: StringTokenizer JAVA im Forum Code Kitchen, in der Kategorie Software Home; hallo ich habe folgendes problem und zwar möchte ich aus einer textdatei ein Wort suchen und das möcht ich so ...

Antwort
Alt 24.11.05, 23:10   #1 (permalink)
 
Registriert seit: 30.01.05
Metathron Leistung: Facit NTK
Likes: 0
Standard StringTokenizer JAVA


hallo ich habe folgendes problem und zwar möchte ich aus einer textdatei ein Wort suchen und das möcht ich so machen:
Ich lese das File zeilenweise ein und zerlege dann immer die Zeile mit dem stringtokenizer, das geht ja noch ganz gut aber nun habe ich eine IF abfrage hinzugefügt if (st.nextToken() == "tester")
System.out.println("Da is er ja!!");

und da fängt er zu spinnen an. Wenn ich debuge springt er in die Class StringTokenizer.class dann Thread.class und dann die Fehlermeldung

anbei der code und die fehlermeldung


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Uebersicht {
public static void main(String args[]) throws Exception {

BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream("c:\\gala.txt")));
//BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
// new FileOutputStream("c:\\MyFile1.txt")));
String s = in.readLine();
StringTokenizer st = new StringTokenizer(in.readLine());

while (s != null) {
//while (s != null) {
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
if (st.nextToken() == "tester")
System.out.println("Da is er ja!!");

}
st = new StringTokenizer(s);
s = in.readLine();

//}

//s = in.readLine();
}

in.close();

// out.write(s);
// out.newLine();
//out.close();

}

}








Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at Uebersicht.main(Uebersicht.java:28)

Metathron ist offline   Mit Zitat antworten
Alt 24.11.05, 23:39   #2 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

Code:
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
if (st.nextToken() == "tester")
System.out.println("Da is er ja!!");
}
in dem teil des codes holst du dir 2 mal nacheinander das nächste token. denke nicht dass das so beabsichtigt ist.
soll wohl eher so aussehen:
Code:
while (st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
if (token.equals("tester"))
System.out.println("Da is er ja!!");
}
beachte dass man in java mit == instanzen vergleicht, also ob diese ein und dasselbe objekt sind. du willst aber bestimmt die strings inhaltlich vergleichen. dies macht man mit der funktion equals().
__________________
http://livehabo.hackerboard.de | http://livebb.sourceforge.net
ivegotmail ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 25.11.05, 07:20   #3 (permalink)
 
Registriert seit: 10.10.05
Gottzilla Leistung: Facit NTK
Gottzilla eine Nachricht über ICQ schicken
Likes: 0
Standard

Wie Ivegotmail schon gesagt hat, du holst dir zweimal den nächsten Token und bist damit einen zu weit. Außerdem werden Strings mit equals vergleicht. Natürlich hab ich auch noch was anzumerken damit dass net als Spam-Post abgetan wird

- Benutzung von Code-Tags macht das ganze enorm übersichtlicher
- In deinen Dateipfad solltest du statt \\ (sprich \ => normaler Windows Fileseparator) z. B. System.getProperty("file.separator"; verwenden. Damit machst du das ganze auch Systemunabhängig, was ja der große Vorteil von Java ist
- du liest hier eine Zeile und gleich danach die nächste. Ich denke nicht, dass das so gedacht ist (schau dir dazu mal die 1. Anmerkung von Ivegotmail an)
Code:
 String s = in.readLine();
StringTokenizer st = new StringTokenizer(in.readLine());
- Eine Schleife zum Auslesen einer Datei konstruiert man normalerweiße so (ist aber nur Code-kosmetik)
Code:
while ((s = in.readLine()) != null)
{// hier wird dann nicht nochmal s = in.readLine() aufgerufen}
- Du solltest eine Exception IMMER abfangen und nicht nur ständig throws Exception coden. dadurch wird die Exception nämlich nur an die aufrufende Methode weitergeleitet und ich glaube kaum, dass über public static void main(String[] args) noch ne Methode steht, die diese dann aufruft (verdammt kompliziert geschrieben, ich hoffe du kannst es einigermaßen nachvollziehen )- Wenn man eine Exception wirft oder abfängt sollte man auch immer nur die Exception (oder ggf. mehrere) abfangen bzw. werfen die auch wirklich auftreten können und net einfach nur Exception.

Hoffe ich konnte dir weiterhelfen.

[edit] nochmal @ admins, steht schon im Feedback Forum. Manchmal werden beim Erweiterten Editor auf mysteriöse Weiße Zeilenumbrüche einfach entfernt.
Gottzilla ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » StringTokenizer JAVA
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Java DolphVS Code Kitchen 2 29.09.05 19:28
Java und JCE Schlaflos Code Kitchen 0 13.09.04 11:25
Java smitti Windows 3 26.08.04 10:03
JAVA! gibts soziale java fachleute? yakuza Code Kitchen 4 03.05.04 00:53
Java und Java script paya Code Kitchen 2 29.05.03 09:37


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61