Te explico lo que paso en tu código: cuando escribes do significa que se debe realizar lo que esta dentro de las llaves y luego se revisa la condición(while) para ver si se continua con la iteración. y segun veo tu codigo no tiene por que salir de la iteración cuando le das la edad correcta.
Tu condicion dice lo siguiente en español entendible "do"{ejecuta una serie de sentencias sin verificar la condicion de iteración, al llegar al final} revisa la condicion while(mientras que edad sea mayor que 1 ó edad sea menor que 110), si la respuesta a la condicion es si entonces se repite desde do si la respuesta a la condicion es no se sale de la iteración. Te oy a mostrar como debe ser:
Código Javascript
:
Ver originalpublic class LeerUnaEdad{
public static void main (String [] args){
int edad = 0 ;
do{
Scanner entrada = new Scanner (System.in);
System.out.println ("Escribe una edad " );
edad = entrada.nextInt ();
if (edad < 1 || edad > 110){
System.out.println ("error");
}else{
System.out.println ("edad es: " + edad);
}
}while (edad < 1 || edad > 110);
}
}