Java, split-metoden
Jag har i uppgift att skriva ett program som läser in textfilen jag skapat och som skriver ut textfilens innehåll i kommandofönstret, så att varje ord skrivs ut på en egen rad. Efter att orden har skrivits ut, ska programmet berätta för användaren hur många ord som har skrivits ut.
hittills har har jag skrivit detta
jag skriver in filnamnet och då läses filinnehållet samt antal ord
i uppgiften står det att jag ska använda split-metoden för att varje ord ska skrivs ut på en egen rad, men vet riktigt hur jag ska implementera det i min program
Tack på förhand
Hur fungerar split-metoden?
split-metoden ska används för att dela upp en textsträng i flera delsträngar (i detta fall ord) där ett visst tecken förekommer (i detta fall mellanslag)
Kan du visa hur textfilen som du läser in sakerna ifrån ser ut?
detta är textfilen som jag använder
osendebad skrev:split-metoden ska används för att dela upp en textsträng i flera delsträngar (i detta fall ord) där ett visst tecken förekommer (i detta fall mellanslag)
Mm, jag menade också hur anropas den?
Jag ser dessutom att talet 6 som kommer ut är längden på filnamnet som du har angivit. "minfil" har sex tecken.
Laguna skrev:osendebad skrev:split-metoden ska används för att dela upp en textsträng i flera delsträngar (i detta fall ord) där ett visst tecken förekommer (i detta fall mellanslag)
Mm, jag menade också hur anropas den?
Jag ser dessutom att talet 6 som kommer ut är längden på filnamnet som du har angivit. "minfil" har sex tecken.
int l = filnamn.length();
System.out.println("Antal ord: " + l);
Ett annat alternativ som tar reda på hur många ord filen "minfil" har
String [] ord = rad.split("\\s+");
System.out.println("Antal ord: " + ord.length);
osendebad skrev:Laguna skrev:osendebad skrev:split-metoden ska används för att dela upp en textsträng i flera delsträngar (i detta fall ord) där ett visst tecken förekommer (i detta fall mellanslag)
Mm, jag menade också hur anropas den?
Jag ser dessutom att talet 6 som kommer ut är längden på filnamnet som du har angivit. "minfil" har sex tecken.
int l = filnamn.length(); System.out.println("Antal ord: " + l);
Ja, det där är ju fel. Hur anropar man 'split', undrade jag.
Visa hur textfilen ser ut istället! Innehållet alltså
beerger skrev:Visa hur textfilen ser ut istället! Innehållet alltså
detta är textfilen som jag utgår ifrån och som innehåller texten "java string split method by javatpoint." (detta är ett exempel)
Laguna skrev:osendebad skrev:Laguna skrev:osendebad skrev:split-metoden ska används för att dela upp en textsträng i flera delsträngar (i detta fall ord) där ett visst tecken förekommer (i detta fall mellanslag)
Mm, jag menade också hur anropas den?
Jag ser dessutom att talet 6 som kommer ut är längden på filnamnet som du har angivit. "minfil" har sex tecken.
int l = filnamn.length(); System.out.println("Antal ord: " + l);
Ja, det där är ju fel. Hur anropar man 'split', undrade jag.
jag har nu istället skrivit detta, som också ger samma svar, alltså 6 antal ord i det här fallet
String [] ord = rad.split("\\s+");
System.out.println("Antal ord: " + ord.length);
Kan du skriva ut orden också?
Laguna skrev:Kan du skriva ut orden också?
Ja, ända som saknas är att dela upp orden var för sig på varje rad som jag inte har kommit på hur
osendebad skrev:Laguna skrev:Kan du skriva ut orden också?
Ja, ända som saknas är att dela upp orden var för sig på varje rad som jag inte har kommit på hur
har lagt in några extra ord för att säkerställa att programmet körs korrekt och räknar orden.
osendebad skrev:beerger skrev:Visa hur textfilen ser ut istället! Innehållet alltså
detta är textfilen som jag utgår ifrån och som innehåller texten "java string split method by javatpoint." (detta är ett exempel
String str = "Java string split"
String[] s = str. split(" ")
Då borde s vara ["Java", "string", "split"]
Såg ditt nya meddelande nu, vilken funktion är det du saknar nu?
beerger skrev:Såg ditt nya meddelande nu, vilken funktion är det du saknar nu?
vet faktiskt inte, ser ut som jag är vilse, som du sa:
String str = "Java string split"
String[] s = str. split(" ")
Då borde s vara ["Java", "string", "split"]
programmet jag har skrivit är anpassad till vilken textfil som helst och inte bara några enstaka ord som jag skriver i kommandofönstret.
Men som jag förstår det ska du skriva ut antalet ord, vilket du lyckas med. Och nu ska du printa ut alla orden rad för rad i konsolen?
beerger skrev:Men som jag förstår det ska du skriva ut antalet ord, vilket du lyckas med. Och nu ska du printa ut alla orden rad för rad i konsolen?
Ja,
När du använt split så kommer det resultera i en lista med strängar. Då kan du ju skriva typ såhär:
for (type var : list)
{
System.out.println(var)
}
Eller använd en vanlig for loop och printa ut varje element.
beerger skrev:När du använt split så kommer det resultera i en lista med strängar. Då kan du ju skriva typ såhär:
for (type var : list)
{
System.out.println(var)
}
Eller använd en vanlig for loop och printa ut varje element.
Förstår inte riktigt vad du menar, var i programmet ska jag ska jag lägga in for-loopen?
Det beror på exakt vad programmet ska göra. Nu gör det inte riktigt det som du beskriver i början: det skriver ut antalet ord för varje rad, en rad i taget. Det skulle skriva ut antalet ord i hela filen, på slutet.
I pseudokod så gör programmet nu
för varje rad:
räkna orden på raden, skriv ut antalet
Det ska göra
för varje rad:
räkna orden på raden, addera antalet till det totala antalet
till sist:
skriv ut det totala antalet
Det ska skriva ut själva orden också, så nu får du välja mellan att först lägga till utskrivning av orden i din kod och sedan ändra den så sakerna händer i rätt ordning, eller att fixa ordningen först och sedan lägga till utskrivning av orden.
som på bilden har jag skrivit detta
for(int i=0; i<=rad.length()-1; i++) {
System.out.println(rad.charAt(i));
}
då får jag ut detta
dvs. den skriver ut hela meningen och precis under den delas texte en teske på varje rad
längre ner skriver den antal ord
vad och var gör jag fel??
osendebad skrev:som på bilden har jag skrivit detta
for(int i=0; i<=rad.length()-1; i++) { System.out.println(rad.charAt(i)); }
då får jag ut detta
dvs. den skriver ut hela meningen och precis under den delas texte en teske på varje rad
längre ner skriver den antal ord
vad och var gör jag fel??
Gör samma sak fast med variabeln ord, där du har använt split på variabeln rad.
Skriv:
for(int i = 0; i < ord.length(); i++) {
System.out.println(ord[i]);
}
beerger skrev:Gör samma sak fast med variabeln ord, där du har använt split på variabeln rad.
Skriv:
for(int i = 0; i < ord.length(); i++) {
System.out.println(ord[i]);
}
utan att ändra någonting får jag detta fel
I loopen har du nu i <= rad.length(), antingen skriver du i < rad.length(), eller i <= rad.length() - 1 (som du gjort tidigare)
Du måste ha råkat tagit bort det.