//******************************************************************** // PigLatinTranslator.java Author: Lewis and Loftus // // Classe per rappresentare la traduzione dall'inglese a Pig Latin. // Fa uso della decomposizione di metodi e della classe StringTokenizer. // Il Pig Latin è una specie di latino maccheronico usato scherzosamente // come linguaggio segreto tra bambini. Le regole sono: // 1. le consonanti iniziali di una parola vengono eliminate // e appese alla fine con l'aggiunta della stringa "ay". // Ad esempio: hello diventa ellohay // 2. alle parole che iniziano per vocale viene solo // appesa alla fine la stringa "yay" //******************************************************************** import java.util.StringTokenizer; public class PigLatinTranslator { //----------------------------------------------------------------- // Metodo per tradurre una frase in Pig Latin. //----------------------------------------------------------------- public String translate (String frase) { String result = ""; frase = frase.toLowerCase(); StringTokenizer tochenizzatore = new StringTokenizer (frase); while (tochenizzatore.hasMoreTokens()) { result += translateWord (tochenizzatore.nextToken()); result += " "; } return result; } //----------------------------------------------------------------- // Metodo per tradurre una parola in Pig Latin. // Se la parola inizia con una vocale, // appende il suffisso "yay". Altrimenti,le consonanti // vengono rimosse e apppese alla fine della parola, // assieme al suffisso "ay". //----------------------------------------------------------------- private String translateWord (String word) { String result = ""; if (beginsWithVowel(word)) result = word + "yay"; else if (beginsWithPrefix(word)) result = word.substring(2) + word.substring(0,2) + "ay"; else result = word.substring(1) + word.charAt(0) + "ay"; return result; } //----------------------------------------------------------------- // Determina se la parola inizia con vocale. //----------------------------------------------------------------- private boolean beginsWithVowel (String word) { String vowels = "aeiouAEIOU"; char letter = word.charAt(0); return (vowels.indexOf(letter) != -1); } //----------------------------------------------------------------- // Determina se la parola comincia con un prefisso // particolare di due caratteri. //----------------------------------------------------------------- private boolean beginsWithPrefix (String str) { return ( str.startsWith ("bl") || str.startsWith ("pl") || str.startsWith ("br") || str.startsWith ("pr") || str.startsWith ("ch") || str.startsWith ("sh") || str.startsWith ("cl") || str.startsWith ("sl") || str.startsWith ("cr") || str.startsWith ("sp") || str.startsWith ("dr") || str.startsWith ("sr") || str.startsWith ("fl") || str.startsWith ("st") || str.startsWith ("fr") || str.startsWith ("th") || str.startsWith ("gl") || str.startsWith ("tr") || str.startsWith ("gr") || str.startsWith ("wh") || str.startsWith ("kl") || str.startsWith ("wr") || str.startsWith ("ph") ); } }