/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
StringTokenizer?
Fra : JS


Dato : 13-01-05 22:22

Jeg vil gerne udskrive String a "Jeg gik mig over......". Men kun så der
står ca. 10 chars på hver linie. Lige nu udskriver den 11 liner med:

"Jeg gik mig".

Tror problemet er at jeg ikke kan få undersøgt resten af min streng efter at
de første tokens er sat sammen.

Håber nogen kan hjælpe!

import java.util.*;
public class Token {

public static void main(String[] args) {

String a = "Jeg gik mig over sø og land der mødte jeg en gammel
mand";
int x = a.length();
String temp = "";

StringTokenizer p = new StringTokenizer(a);
int i = 0;

while(i<= p.countTokens())
{

while(temp.length()<= 10)
{String first_line = p.nextToken();
temp = temp + first_line + " ";


}
System.out.println(temp.trim());
i++;
}
}
}



 
 
Søren Klintsø (13-01-2005)
Kommentar
Fra : Søren Klintsø


Dato : 13-01-05 22:27

Du får vist aldrig nulstillet variablen temp, efter du har udskevet den.

Der mangler vist et temp = "";
efter System.out.println(temp.trim());

mvh Søren

"JS" <dsa.@asdf.com> skrev i en meddelelse
news:cs6okt$767$1@news.net.uni-c.dk...
> Jeg vil gerne udskrive String a "Jeg gik mig over......". Men kun så der
> står ca. 10 chars på hver linie. Lige nu udskriver den 11 liner med:
>
> "Jeg gik mig".
>
> Tror problemet er at jeg ikke kan få undersøgt resten af min streng efter
at
> de første tokens er sat sammen.
>
> Håber nogen kan hjælpe!
>
> import java.util.*;
> public class Token {
>
> public static void main(String[] args) {
>
> String a = "Jeg gik mig over sø og land der mødte jeg en gammel
> mand";
> int x = a.length();
> String temp = "";
>
> StringTokenizer p = new StringTokenizer(a);
> int i = 0;
>
> while(i<= p.countTokens())
> {
>
> while(temp.length()<= 10)
> {String first_line = p.nextToken();
> temp = temp + first_line + " ";
>
>
> }
> System.out.println(temp.trim());
> i++;
> }
> }
> }
>
>



JS (13-01-2005)
Kommentar
Fra : JS


Dato : 13-01-05 22:45


"Søren Klintsø" <klintsoe@vip.cybercity.remove.dk> skrev i en meddelelse
news:41e6e778$0$48323$14726298@news.sunsite.dk...
> Du får vist aldrig nulstillet variablen temp, efter du har udskevet den.
>
> Der mangler vist et temp = "";
> efter System.out.println(temp.trim());
>
> mvh Søren


Tak for det! Nu har jeg forsøgt at udvide den til at skulle læse indholdet
fra en fil, men kan ikke helt få den til at skrive de rigtige sætninger til
filen, tror det har noget at gøre med min return statement...

-------------------------------------
import java.io.*;
import java.util.*;

public class PrettyPrint {

private BufferedReader infile;
private String name;

public PrettyPrint(String file_name){


try{ infile = new BufferedReader(new FileReader(file_name));}
catch (Exception e)
{System.out.println("No such file");
throw new RuntimeException("No such file2");
}
}



public String readWord()throws IOException{

String temp = "";

if (infile.ready())
{String line = infile.readLine().trim();
StringTokenizer k = new StringTokenizer(line);

int i = 0;

while(i<= k.countTokens())
{

while(temp.length()<= 10)
{String first_line = k.nextToken();
temp = temp + first_line + " ";


}
System.out.println(temp.trim());
i++;
temp = "";

}
}
return temp;
}



Kasper G. Christense~ (14-01-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 14-01-05 06:55

> Tak for det! Nu har jeg forsøgt at udvide den til at skulle læse indholdet
> fra en fil, men kan ikke helt få den til at skrive de rigtige sætninger til
> filen, tror det har noget at gøre med min return statement...

Hvor prøver du at skrive til en fil? Jeg kan kun se at du læser fra en
fil. Din readWord() metode vil altid returnere den tomme streng "", da
du jo nulstiller temp for hvert gennemløb af løkken. Hvad er meningen
med at readWord returnerer noget? Hvis det er fordi metoden skal
returnere en "formateret linie" ad gangen, så skal du ikke have hele din
while-løkke inden i metoden, men i stedet på klasse-niveau gemme status
over hvor langt du er nået, f.eks. ved at erklære din tokenizer på
klasseniveau. Hvis du derimod stadig blot vil have udskrevet det hele
til standard out (System.out.println), så lad readWord() returnere void.

Du skal forøvrigt være opmærksom på at hvis BufferedReader.ready()
returnerer false, betyder det ikke at filen er slut, men at den ikke er
klar til at blive læst - f.eks. er filsystemet ikke "færdig med at åbne
den", altså kan der være lidt ventetid på en read(), men i dit tilfælde
vil jeg tro at det er lige meget. For at finde ud af om der er flere
linier i filen, bør du læse en linie med readLine() og kontrollere om
resultatet er null (se forøvrigt API'en).

Mvh. Kasper

>
> -------------------------------------
> import java.io.*;
> import java.util.*;
>
> public class PrettyPrint {
>
> private BufferedReader infile;
> private String name;
>
> public PrettyPrint(String file_name){
>
>
> try{ infile = new BufferedReader(new FileReader(file_name));}
> catch (Exception e)
> {System.out.println("No such file");
> throw new RuntimeException("No such file2");
> }
> }
>
>
>
> public String readWord()throws IOException{
>
> String temp = "";
>
> if (infile.ready())
> {String line = infile.readLine().trim();
> StringTokenizer k = new StringTokenizer(line);
>
> int i = 0;
>
> while(i<= k.countTokens())
> {
>
> while(temp.length()<= 10)
> {String first_line = k.nextToken();
> temp = temp + first_line + " ";
>
>
> }
> System.out.println(temp.trim());
> i++;
> temp = "";
>
> }
> }
> return temp;
> }
>
>


--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste