public class Question_6 {
public static void main(String[] args) {
int x = 0;
int y;
do{
y = x++;
System.out.print(y);
} while(y < 5);
}
}
O while considera a existência de uma variável y no contexto do programa. Contudo o y só passa a existir dentro do while na sua versão.
Na sua versão, tecnicamente o compilador executaria o while antes de ser criado a variavel y. Por isso não rodou. Já que ele não está achando a mesma que considerando que o while está tentando checar algo que ainda não existe.
Como eu criei a variavel y antes do DO WHILE, o programa entende que a minha variável y existe antes de executar o loop, o DO WHILE ficaria responsável apenas por fazer o processamento de somar +1 e depois checar se o y é menor que 5.