Le programme passe bien dans ton else mais ne s'arrête pas pour lire le prochain input de l'utilisateur. Le problème vient de cette ligne :
String newKey = sc.nextLine();
Ici, la bonne solution est d'utiliser la fonction next().
String newKey = sc.next();
Pour t'expliquer, il faut d'abord comprendre le fonctionnement de ton programme. Dans un premier temps, tu vas donner un input de type int, disons 5. Ce qui va être "compris" et "noté" par la machine ce sera :
5 \n
En effet, en entrant ton input de type int, tu vas automatiquement générer un retour à la ligne (le \n). En soit, il n'y a pas de problème ici puisque ton nextInt() va bien récupérer l'entier, ici le 5.
On passe donc dans ton else, et le problème apparaît avec ta fonction nextLine(), étant donné que ton scanner n'a lu que l'entier, il reste le \n à lire et va donc le faire. Vu qu'il a récupéré quelque chose, il passe directement à l'instruction suivante et ton programme fini sans avoir eu la possibilité de faire autre chose.
Avec la fonction next(), tu vas prendre le prochain token et dans ton cas tu ne vas pas consommer le retour à la ligne (\n).
Note : Pense à utiliser les balises de code pour rendre ton poste plus lisible, autant pour toi que pour les autres.