Fala Ian, beleza? É um erro muito bobo que eu reparei (e até demorei pra achar) que infelizmente o console não acusa como erro (?). Na sua linha:
if (semrepetir == true); {
você coloca um ponto e vírgula após a condição, o que anula totalmente ela! O compilador lê essa instrução como "se semrepetir == true não faça nada", pois não há nada entre o if e o ponto e vírgula. Depois dessa linha ele lê o resto das instruções como se elas estivessem fora do if. Por isso que quando você adicionava sempre dava certo, independente da string.
O correto então seria:
if (semrepetir==true) {