Originariamente inviato da zipangulu 
A mio avviso non è il massimo della eleganza , ma voi come lo implementereste in una maniera più "pulita"?
			
		
 
	 
 
Io propongo questa possibile soluzione
	codice:
	import java.util.HashMap;
public class Esempio {
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println(Esempio.setVocaliToUpperCase("persona"));
        System.out.println(Esempio.setVocaliToUpperCase("arcobaleno"));
    }
    
    public static String setVocaliToUpperCase(String s) {
    	return setVocaliToUpperCase( new StringBuilder(s), 0 );
    }
    
    private static String setVocaliToUpperCase(StringBuilder s, int index){
    	if( index == s.length() )
    		return s.toString();
    	if( VOCALI.get(s.charAt(index)) != null )
    		s.setCharAt(index, Character.toUpperCase(s.charAt(index)));
    	return setVocaliToUpperCase(s, index + 1);
    }
    
    private final static HashMap<Character, Character> VOCALI;
    static {
    	VOCALI = new HashMap<Character, Character>();
    	VOCALI.put('a', 'a');
    	VOCALI.put('e', 'e');
    	VOCALI.put('i', 'i');
    	VOCALI.put('o', 'o');
    	VOCALI.put('u', 'u');
    }
}
 
Fammi sapere.