Te recomiendo que agarres lápiz y papel y hagas el seguimiento del programa.
En tu primer code, supongamos que tu base es "2" y tu exponente "3" (por ende, el resultado debería ser 8).
En tu primer code, entra al for (n == 1) --> base = base*base --> 2 = 2*2 --> base == 4.
sigue en el bucle for (n == 2) --> 4 = 4*4 --> base == 16
sigue en el bucle for (n == 3) Aquí ya no entra puesto que 3 < 3 es falso.
Esto obviamente está mal.
Veamos, vos tenés tu base, tu exponente, y podés utilizar un acumulador.
Entonces, podemos inicializar nuestro acumulador antes de entrar al bucle for:
acumulador = base
Recuerda que no se debería de perder la información ni de la base, ni del exponente en ningún momento del programa (ese es tu fallo en tu primer code, sobreescribís la variable base).
Al haber inicializado, podés entrar en el bucle for sin problemas.
entra al for (n == 1) --> acumulador = acumulador*base --> 2 = 2*2 --> acumulador == 4.
sigue en el bucle for (n == 2) --> 4 = 4*2 --> acumulador == 8
sigue en el bucle for (n == 3) Aquí ya no entra puesto que 3 < 3 es falso.
Nuestro acumulador nos da el resultado correcto.
acumulador = base;
for(int i=1;i<potencia;i++)
{
acumulador=acumulador*base;
}
IOConsole.println("El resultado es "+acumulador+"");