si ça passe la boucle, tu peut traduire directement le fait que retest.equalsIgnoreCase(o) est faux, bien que retest = 'o' et o = 'o' (je suppose que tu l'avais compris, mais parfois, le préciser explicitement aide à mieux voir d'où peut venir le problème).
que fait l'option equalsIgnoreCase exactement ? Il est sensé comparer quoi ? Si ça se trouve, il n'est pas capable de comparer des chaines de caractères (enfin, pas comme ça) ?
Après, je ne m'y connais pas en java.
Mais cherche des options ou des fonctions en rapport avec les chaines de caractères. T'en trouveras peut être une plus approprié ?
Tu peut aussi chercher à traduire une chaine de caractère en notation ASCII, et ainsi avoir des nombres comparable comme on a généralement l'habitude (enfin, je suppose qui si une option permet de comparer des chaines de caractères, elle doit le faire directement en fait, ça évite d'écrire 2 lignes ou plus au lieu d'une, et c'est plus facilement compréhensible)