Avatar billede rasmuslh Nybegynder
31. marts 2005 - 10:54 Der er 5 kommentarer og
1 løsning

startsWith(String)

Hejsa

Er rimelig rookie ud i java! Jeg har en opgave hvor jeg skal lave min egen implementering af startsWith(String s)

Jeg har lavet følgende:

public class startsWithTest {
   
    public boolean startsWith(String prefix) {
             
        for (int i = 0;i < prefix.length(); i++){
            if(!(THIS.charAt(i) == prefix.charAt(i)))
                return false;
        }
        return true;
    }
   
    public static void startsWithTest(String s, String prefix) {
        if(s.startsWith(prefix))
            System.out.println("The string " + s + " is prefixed by " + prefix);
        else
            System.out.println("The string " + s + " is not prefixed by " + prefix);

    }

Mit problem er inden i startsWith(). Hvordan sammenligner man den  string som metoden kaldes på med argumentet der gives med. Jeg troede at man kunne gøre det med this, men det virker ikke.

Håber der er en der kan hjælpe.

På forhånd tak.
Avatar billede rasmuslh Nybegynder
31. marts 2005 - 10:55 #1
Jeg ville altså gerne kunne teste den ved et kald:

startsWithTest.startsWithTest("Rasmus", "Ra");
Avatar billede rbj_fp Nybegynder
31. marts 2005 - 11:16 #2
public class startsWithTest {
 
    private String myString;

    public boolean startsWith(String prefix) {
           
        for (int i = 0;i < prefix.length(); i++){
            if(!(myString.charAt(i) == prefix.charAt(i)))
                return false;
        }
        return true;
    }
 
    public static void startsWithTest(String s, String prefix) {
        myString = s;
        if(startsWith(prefix))
            System.out.println("The string " + s + " is prefixed by " + prefix);
        else
            System.out.println("The string " + s + " is not prefixed by " + prefix);
}

burde virke.
Avatar billede arne_v Ekspert
31. marts 2005 - 11:21 #3
Da String er en final class og ikke kan extendes så synes jeg at de 2 metoder bør
merges sammen til 1 metode

public static boolean startsWith(String s, String prefix) {
        for (int i = 0; i < prefix.length(); i++){
            if(s.charAt(i) != prefix.charAt(i))
                return false;
        }
        return true;
}

Jeg går udfra at brug af indexOf er "snyd".
Avatar billede rasmuslh Nybegynder
31. marts 2005 - 12:07 #4
Hej Arne

Du er altid på banen. Nu går opgaven "desværre" ud på at man ikke må merge de to metoder sammen. :-(

Det virkede på rbjs måde. Dog blev jeg nødt til at lave mystring til static.

@rbj Smider du lige et svar?
Avatar billede rbj_fp Nybegynder
31. marts 2005 - 12:34 #5
here...

Ville dog nok også fortrække at bruge arne_v metode, hvis du måtte..
Avatar billede arne_v Ekspert
31. marts 2005 - 14:54 #6
Ikke mindst fordi en static mystring gør at koden ikke er thread safe !
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