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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...