Eso es parte de los fundamentos de programación: Variables locales y globales.
Tomando de un manual:
Cita: Una variable local es aquella cuyo ámbito se restringe a la función que la ha declarado se dice entonces que la variable es local a esa función. Esto implica que esa variable sólo va a poder ser manipulada en dicha sección, y no se podrá hacer referencia fuera de dicha sección. Cualquier variable que se defina dentro de las llaves del cuerpo de una función se interpreta como una variable local a esa función.
Las secciones o entornos de existencia están determinados en la clase, los métodos, las funciones; y dentro del cuerpo de cada uno de ellos, existen variables que son globales del método o función y otras locales de las estructuras, como es tu caso.
Por eso, Puedes declarar si quieres una variable dentro del método, y dentro de un Do...While declarar otra con el mismo nombre. Ambas serán distintas, y asignar un valor a la interior del Do...While no asigna valor a la exterior...