27 svar
856 visningar
osendebad behöver inte mer hjälp
osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 17:56

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

Laguna Online 30472
Postad: 9 jul 2021 17:58

Hur fungerar split-metoden?

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 18:01

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)

beerger 962
Postad: 9 jul 2021 18:07

Kan du visa hur textfilen som du läser in sakerna ifrån ser ut?

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 18:24

detta är textfilen som jag använder 

Laguna Online 30472
Postad: 9 jul 2021 18:32 Redigerad: 9 jul 2021 18:34
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.

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 18:40
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);
osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 18:54

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);
Laguna Online 30472
Postad: 9 jul 2021 20:09
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. 

beerger 962
Postad: 9 jul 2021 20:14

Visa hur textfilen ser ut istället! Innehållet alltså

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 20:21
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)

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 20:25
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);
Laguna Online 30472
Postad: 9 jul 2021 20:34

Kan du skriva ut orden också? 

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 20:49
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 15 – Fd. Medlem
Postad: 9 jul 2021 20:52
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.

beerger 962
Postad: 9 jul 2021 20:52
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"]

beerger 962
Postad: 9 jul 2021 20:54

Såg ditt nya meddelande nu, vilken funktion är det du saknar nu? 

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 21:06
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. 

beerger 962
Postad: 9 jul 2021 21:33

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? 

osendebad 15 – Fd. Medlem
Postad: 9 jul 2021 21:59
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,

beerger 962
Postad: 9 jul 2021 22:10

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. 

osendebad 15 – Fd. Medlem
Postad: 10 jul 2021 11:34
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?

Laguna Online 30472
Postad: 10 jul 2021 11:59

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.

osendebad 15 – Fd. Medlem
Postad: 10 jul 2021 12:12

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 15 – Fd. Medlem
Postad: 10 jul 2021 12:20
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??

beerger 962
Postad: 10 jul 2021 14:37

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]);

}

osendebad 15 – Fd. Medlem
Postad: 10 jul 2021 14:57
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

beerger 962
Postad: 10 jul 2021 15:07

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.

Svara
Close