Jeg har en tekstfil (test.txt) som jeg læser fra. Indholdet fra denne fil ønsker jeg så at skrive til en ny fil (fx testout.txt). Dog må der på hver line max være ca. 10 chars.
Jeg har fået noget hjælp til at bruge StringTokenizer som jeg skal bruge i sammenhæng med læsning og skrivning til filen. Jeg har modificeret lidt på min klasse men kan kun skrive den første samling af tokens der har en length på ca. 10 til min fil.
Jeg kunne forstille mig at problemet opstår i min return statement, håber nogen har et hint eller 2.
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);
Jeg mente mere hvad det er som går galt i mine while løkker. Jeg vil jo gerne have retuneret den "streng" indholdet i min tekstfil består af i små bidder der hver er ca. 10 chars. Det er det som min metode readWord skal gøre. Ved ikke om det er præcist nok formuleret?
Hehe ja når jeg bruger jeres koder virker det fint, men kunne godt tænke mig at se om jeg også kunne få "repareret" denne version...har haft et stædigt udestående med den i et stykke tid. Kan godt lide at få så meget rutine med det som muligt.
public class Test { public String opDelTekst(String linje) { int Tegn = 0; String ord ="", tmp =""; StringTokenizer tokenizer;
tokenizer = new StringTokenizer (linje);
while (tokenizer.hasMoreTokens()) { tmp = tokenizer.nextToken(); Tegn += tmp.length(); if(Tegn > 10) { Tegn = 0; ord +="\n"; }
ord += tmp + " ";
} return ord; }
public static void main (String[] args) { Test start = new Test(); String voresTekst = "Hej jeg skal hermed opdeles i mindre dele så jeg fylder mindre send mig lige til metoden"; voresTekst = start.opDelTekst(voresTekst); System.out.println(voresTekst); } }
her har jeg smidt det ind i en metode for dig.. du skal faktisk bare lave dine ændringer her.. hent og gem
public static void main (String[] args) { Test start = new Test(); String voresTekst = "Hej jeg skal hermed opdeles i mindre dele så jeg fylder mindre send mig lige til metoden"; voresTekst = start.opDelTekst(voresTekst); System.out.println(voresTekst); }
dvs..
String voresTekst = "Hej jeg skal hermed opdeles i mindre dele så jeg fylder
Ok det var også det du skrev under mit indlæg ang. StringTokenizer ikke?
Men jeg er interesseret i at høre om der nogen som kan forklare mig hvad problemet helt præcist er med den kode jeg har skrevet i starten af tråden er, og hvilke ting der skal gøres for at få den til at du hvis det overhovedet er muligt.
try{ infile = new BufferedReader(new FileReader(file_name));} catch (Exception e) {System.out.println("No such file"); throw new RuntimeException("No such file2"); } }
en stor fejl i din kode er i hvertfald du du erklære "first_line" variablen hver gang løkken bliver kørt og derfor sletter du alt der stod i den fra før:)
Det er svært at lave en pæn løsning med BufferedReader og readLine hvor der læses løbende fordi linier i input og linier i output ikke matcher. Det vil blive noget komplekst kode. Derfor valgte jeg at læse hele input ind og så parse det.
Hvis du bruger Java 1.5 (også kaldet 5.0) så kan du erstatte BufferedReader og StringTokenizer med en Scanner og få en meget simpel løsning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.