ÖVNINGSUPPGIFT

Uppgift 5 - Rövarspråket

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: Metoder

Frågor och svar

Programmera Rövarspråket i Java

Vi ska nu programmera en riktig klassiker - rövarspråket. I rövarspråket lägger man till bokstaven o efter varje konsonant följt av samma konsonant igen. Vokalerna och mellanslag i rövarspråket är oförändrade.

Exempel:

programmera java
poprorogogroramommomerora jojavova

Skapa en metod som givet en textsträng returnerar översättningen i rövarspråket. Metoden ska anropa en annan metod som undersöker om en bokstav är en vokal eller ej.

Utgå från följande program för att lösa uppgiften:

public class MetoderUppgift5 {
    public static void main(String[] args) {
        // Skriv din kod här
    }
}

Du kan i denna uppgift utgå från alla alla bokstäver är gemener (små bokstäver).

Ledtråd

Skapa en switch-sats för att kolla om en given bokstav är en vokal (eller ett mellanslag). Använd den inbyggda metoden

text.charAt(i);

för att plocka ut en bokstav från en textsträng, där text är en variabel av typen String och i är positionen på bokstaven du vill plocka ut. Observera att 0 är den första bokstaven och text.length() - 1 är den sista bokstaven.

Svar
public class MetoderUppgift5 {
    public static void main(String[] args) {
        
        // Anropar metoden rovarsprak som översätter en textsträng till rövarspråket
        String translation = rovarsprak("programmera java");
        System.out.println(translation);
    }

    public static String rovarsprak(String s) {
        String translation = "";
        
        // Loopar igenom alla bokstäver i ordet/meningen och översätter den till rövarspråket 
        for (int i = 0; i < s.length(); i++) {
            char letter = s.charAt(i);
            
            // Kollar om varje bokstav är en vokal eller ej
            if(isVowel(letter) || !Character.isLetter(letter)){
                translation = translation + letter;
            }else{
                translation = translation + letter;
                translation = translation + "o";
                translation = translation + letter;
            }
        }
        return translation;
    }


    // Returnerar true om en given bokstav är en vokal
    public static boolean isVowel(char letter){

        // Alla vokaler
        switch(letter) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
            case 'y':
            case 'å':
            case 'ä':
            case 'ö':
            case ' ':
                return true;
            default:
                return false;
        }
    }
}

Förklaring: 

Metoden isVowel undersöker om en given bokstav är en vokal (eller mellanslag). Metoden returnerar true om bokstaven är en vokal, annars false.

Metoden rovarspraket tar en textsträng som input och returnerar en textsträng. Vi loopar igenom alla bokstäver i textsträngen med loopen:

for (int i = 0; i < s.length(); i++) {
    char letter = s.charAt(i);
}

där s.charAt(i) plockar ut en bokstav givet en textsträng. Variabeln i anger vilken position bokstaven vi vill plocka ut befinner sig.

Om bokstaven är en vokal (eller mellanslag) gör vi ingenting med bokstaven. Men om bokstaven är en konsonant lägger vi till samma konsonant igen, följt av ett o och samma konsonant igen. Avslutningsvis returnerar vi resultatet och skriver ut det i terminalen.

Tillbaka till översikt