Hola.
Aunque el programa funcione, has optado por usar un bucle infinito (
while(true)) para luego "romperlo" con un break cuando se cumpla la condición de salida.
ESto lo has hecho siguiendo el ejemplo explicativo de esa entrega 59, pero fíjate que en esa misma entrega ya se indica que esta forma de hacer el bucle while es meramente un ejemplo explicativo y no debería ser la forma habitual de proceder
[...] en general la salida a un bucle se realizará de forma natural mediante la evaluación de la condición y no mediante una instrucción break;.
Así que lo ideal sería que reescribas tu bucle while y en el lugar del true pongas ahí la condición que ha de cumplirse para que se repita el while.
Esta condición es muy similar a la que has usado en el if, pero será distinta.
Fíjate que en el if, has tenido que pensar en la condición que VA A PONER FIN al bucle.
En cambio, para la condición del while, vas a tener que pensar en la condición que VA A HACER QUE SE REPITA el bucle.
Es decir, MIENTRAS se cumpla dicha condición, el bucle se repetirá. Cuando deje de cumplirse, el bucle finalizará.
El uso de break para romper bucles, ya sean while, do..while o for debe evitarse siempre que sea posible.
Habrá situaciones muy concretas en las que usar break puede suponer una simplificación importante del código y entonces sí podría ser preferible su uso.
Hay puristas de la programación que te dirán que no, que usar break para romper bucles es prácticamente un sacrilegio je je...
Yo no diría tanto. Siempre evito usar break, pero si me encuentro en una de esas situaciones que hacen que el código quede más simplificado y más legible, entonces no dudo en emplearlo.
En fin, prueba a reescribir ese while como te he dicho, y si tienes dudas pregunta.
Elegir bien las condiciones en los bucles tiene su importancia. En este caso no es difícil, pero hay ocasiones en las que hay que combinar más de una condición. Y saber elegir las condiciones óptimas y en que orden combinarlas, es importante.