Gå til innhold

Anbefalte innlegg

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 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 av Fehrex
Lenke til kommentar
Videoannonse
Annonse

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) :innocent:

Endret av kjey
Lenke til kommentar

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 av ToMmM
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...