Fehrex Skrevet 17. oktober 2008 Del Skrevet 17. oktober 2008 (endret) Heisann.. Driver med en skoleoppgave. Oppgaven lyder følgende; Lag et menysystem der du tilbyr følgende funksjoner Leser inn en tekst Leser inn et ord Søker etter ordet i den innleste teksten og skriver ut posisjonen for hver gang ordet forekommer i tekststrengen. Problemet mitt er at jeg ikke får til å finne flere tilfeller av samme ord i strengen. Læreren påstår at dette MÅ skrives i en løkke.. Jeg står nå fast og trenger akutt hjelp. Min kode står nedenfor import easyIO.*; public class oppg2 { public static void main (String[] args) { In tast = new In(); Out skjerm = new Out(); // variabler String ord; String tekst; int valg; int teller = 0; int index = 0; System.out.println("du må foreta ett valg, skriv inn ett tall fra 1 til 3"); valg = tast.inInt() ; switch(valg) { case 1: System.out.println("Skriv inn ett ord"); ord = tast.inLine() ; System.out.println("Ditt ord var: " + ord); break; case 2: System.out.println("skriv inn en tekst"); tekst = tast.inLine(); System.out.println("Din tekst var: " + tekst); break; case 3: System.out.println("skriv inn ett ord"); ord = tast.inWord() ; System.out.println("skriv inn en tekst"); tekst = tast.inLine(); while (teller < tekst.length()) { String del = tekst.substring(teller); index = del.indexOf(ord); if (index != -1) { System.out.print(index); teller = +index +1; } else teller = tekst.length(); } break; default: System.out.println("du har valgt en verdi som ikke er lov.. muhahaha") ; } } } Endret 17. oktober 2008 av Fehrex Lenke til kommentar
ToMmM Skrevet 17. oktober 2008 Del Skrevet 17. oktober 2008 Si ifra hvis du får det til, sliter med det samme problemet. Lenke til kommentar
kjey Skrevet 17. oktober 2008 Del Skrevet 17. oktober 2008 (endret) Se om dere skjønner denne koden: String noe = "hei på deg, hei hei!"; String sokeord = "hei"; int teller = 0; int i = 0; for(int n = 0; n < noe.length(); n++) { if(noe.indexOf(sokeord, i) != -1) { // Funnet et "hei" =D teller++; i = noe.indexOf(sokeord, i) + 1; System.out.println("Funnet \'" + sokeord + "\', indeks: " + (i - 1)); } } System.out.println("Ordet " + sokeord + " forekommer " + teller + " ganger."); Poenget er at du må bruke versjonen av indexOf() som kan starte å søke på en gitt index. Når du finner det første ordet i dette eksemplet står du på index 0, for "hei" eller altså "h" ligger i index 0. Da setter du "i" til denne indexen og plusser på 1 slik at du kommer deg et hakk videre i strengen. Neste gang den kjører igjennom begynner indexOf() å søke fra "1" til den kommer til "12" hvor neste "hei" står. setter i til 12+1 og søker videre. Vet ikke om dette er den optimale måten, men den fungerer ihvertfall (så vidt jeg vet) Endret 17. oktober 2008 av kjey Lenke til kommentar
ToMmM Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 (endret) Fant en annen løsning basert på while løkke og if, else. Kan ikke gi deg løsningen, men det er et tips.. Tror ikke læreren liker like løsninger.. Fristen er utsatt til mandag så det er ikke så akutt. Endret 18. oktober 2008 av ToMmM Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå