Tu idea de tu método está bien, pero tiene algunas fallas como:
letra.isUpperCase(i)
El método isUpperCase si no me equivoco, acepta un parámetro char. Aquí le estás pasando un Integer.
Poner esto antes del for es redundante:
Esa instrucción solo la haces una vez en donde obtienes la primera letra de lo que devuelve getNombre(). Luego en el for recorres getNombre(), por lo que la sentencia anterior no tiene caso colocarla.
Para hacer más ordenado y simple el algoritmo, podemos hacer lo siguiente:
1) Obtener el nombre de la asignatura
2) Transformarlo a un array de char
3) Recorrer el array en busca de letras Mayúsculas
4) Si es mayúscula, se agrega al String que contendrá las siglas.
5) Devolver las siglas
Nota: No utilizo
Character por que el método
toCharArray() devuelve un
array de char y no hay forma de hacer un cast de este array char a un array Character.
Otra cosa, para estos procesos sencillos utiliza tipos primitivos que se adapten al algoritmo, como son: short, byte, int, float, double, etc. Integer, Character, etc, son objetos y son usados para cosas un poco más completas.
Método:
======
// convierte un String a un array de char
char[] asignaturaLetras = getNombre.toCharArray();
for (short i = 0; i < asignaturaLetras.length; i++) {
// le pasa una letra (char) y evalua si es mayuscula
siglas += asignatura[i];
}
}
return siglas;
}
Saludos.