Avatar billede velle Nybegynder
13. december 2001 - 17:24 Der er 7 kommentarer og
1 løsning

antal forekomster af streng1 i streng2, men på en anden måde !!

Jeg skal have et program, hvor inputtet er to strenge:

streng1 = \"Hejsa, hovsa, halløjsa med dig\"
streng2 = \"sa\"

så skal den kunne finde ud af hvor mange gange streng2 forekommer i streng1.

(Jeg fik åbenbart ikke stillet mit spørgsmål ordentligt før :-)
Avatar billede velle Nybegynder
13. december 2001 - 17:33 #1
Jeg tror at man skal bruge:

indexOf()  og  substring()

Men alt hvad jeg har forsøgt at lave med dem, giver uendeligt loop, så jeg har mistet modet. Det egentlige formål er, at den skal tælle kommaer, men jeg vil have noget kode, hvor den også kan lede efter en lille streng.

VH Velle.
Avatar billede greybeard Nybegynder
13. december 2001 - 17:40 #2
public class test1 {

    public static void main( String[] argv ){
        String streng1 = \"Hejsa, hovsa, halløjsa med dig\";
        String streng2 = \"sa\";
        int count = 0;
        for ( int i = 0 ; i < streng1.length()-streng2.length() ; i++ ) {
            if (streng1.substring(i,i + streng2.length() ).equals(streng2)){
                count++;
            }
        }
        System.out.println( count );
    }
   
}

Hvis du har streng1 = \"ssss\"
og streng2 = \"ss\"
bliver resultatet 3.
ellers skal du tælle i op med streng2.length() i if-sætningen
Avatar billede greybeard Nybegynder
13. december 2001 - 17:42 #3
streng2.length() skal være (streng2.length() - 1)
Avatar billede velle Nybegynder
13. december 2001 - 17:47 #4
genialt :-) mange tak
Avatar billede greybeard Nybegynder
13. december 2001 - 18:05 #5
Selv tak.
Iøvrigt får du problemer,hvis streng 2 er tom.
Avatar billede velle Nybegynder
13. december 2001 - 18:20 #6
lige et spørgsmål:

findes der en \"repeat\"-loop. Jeg har programmeret en smule Delphi, og der kan man skrive

repeat
  ...;
until i>x;

altså et loop der bliver kørt en gang uanset hvad, men bliver kørt igen hvis until-betingelsen ikke er opfyldt efter at have kørt indholdet af loopet.


(jeg er newbie, og har som I kan se en masse dumme spørgsmål. Er det skik, at skulle oprette et nyt spørgsmål for hvert spørgsmål, eller er ok, hvis jeg lige skriver nogle udvidende spørgsmål som dette. Jeg kan jo godt se, at det er fedest for jer, hvis I får point for det i svarer på, men...)
Avatar billede greybeard Nybegynder
13. december 2001 - 18:22 #7
loop{

}while();
Avatar billede greybeard Nybegynder
13. december 2001 - 18:31 #8
Her en mere generel måde:

public class StringTokenCounter {

    public static void main( String[] argv ){
        String streng1 = \"Noget pjat ssss og noget mere pjat\";
        String streng2 = \"ss\";
        StringTokenCounter stc = new StringTokenCounter();
        System.out.println( \"\" + stc.countSubString(streng1, streng2, false) );
        System.out.println( stc.countSubString(streng1, streng2, true) );
    }
   
    public int countSubString(String s1, String s2, boolean overlap) {
        int count = 0;
        if (s1 != null && s2 != null && !s2.equals(\"\")){
            for ( int i = 0 ; i < s1.length()-s2.length() ; i++ ) {
                if (s1.substring(i, i + s2.length() ).equals(s2)){
                    count++;
                    if (!overlap){
                        i+=(s2.length() - 1 );
                    }
                }
            }
        }
        return( count );
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester