Dúvida em execício: Exponenciação sem método math.pow(métodos,parametros)

Exercício:
Escreva um método integerPower(base, exponent) que retorna o valor de base^exponent
Por exemplo, integerPower(3, 4) calcula 3^4 (ou 3 x 3 x3 x 3).Assuma que exponent é um inteiro não-zero positivo e base é um inteiro.O método integerPower deve utilizar um loop for ou while para controlar o cálculo.Não utilize nenhum método da biblioteca de matemática.Incorpore esse método a um aplicativo que lê os valores inteiros para base e exponent e realiza o cálculo com o método integerPower.

Novamente dúvida em métodos, parametros…Não sei se o jeito que eu efetuei o cálculo está certo, creio que sim, mas não sei se está certo o return, e no método calculator qual das 3 varáveis vou utilizar para escrever o resultado.eu pensei que seria a result mas sendo variavel local ela não e reconhecida no método acima…

Main.java

import java.util.Scanner;

public class Main 
{
    public void Calculator()
    {
        //inseri o scanner
        Scanner input = new Scanner(System.in);
        
        //prompt
        System.out.print("Qual sera o valor da base?");
        int base = input.nextInt();
        
        //prompt
        System.out.print("Qual sera o expoente?");
        int expoente = input.nextInt();
     }
    
    public int integerPower(int base, int expoente)
    {
        for (int counter = 1; counter > expoente; counter++ )
        {
            int result = base;
            result = result * base;
        }
        return base;
    }
}

MainTest.java

public class MainTest {
 public static void main(String[] args) 
    {
        Main mainTest = new Main();
        mainTest.Calculator();
    }
}

Vc está resetando result a cada iteração do for e no fim retornando a base, que no caso vc não fez nenhum cálculo. Tbm tem um possível problema de loop infinito no seu for caso expoente seja 0… Pelo o enunciado do problema vc não precisa tratar números negativos.

[code]public int integerPower( int base, int expoente ) {

// se expoente <= 0, retorna 1, pois o for não será eexcutado
int resultado = 1;

for ( int i = 0; i < expoente; i++ )
    resultado *= base;        

return resultado;

}[/code]

Tá ok, eu tinha visto que o result todo loop pegava a base, tinha coloca ele em cima do for, mas acabei colocando esse ai q eu tava testando e que não tava dando certo.Mas isso é erro de lógica que com o tempo vou ficando melhor.

Mas a minha maior dúvida eu acho qeu em java até agora.por exemplo você usa um
return resultado;

lá no método calculator, como faço para exibir o resultado?

sempre me confundo ali os parametros qual eu retorno, qual eu uso para exibir o resultado…
System.out.printf(“Resultado: %d”, integerPower(resultado));

Atente que os identificadores base e expoente usados ao invocar integerPower representam as variáveis que você declarou dentro do Calculator e não as variáveis locais da assinatura do método.

System.out.printf("Resultado: %d", integerPower( base, expoente ) );

Nossa, valeu.

Então sempre quando eu for escrever tenho que colocar os parametros que passei.Valeu
Agora acho que aprendi
Só não entendi o porque?Se o resultado está na variavel resultado.

Ali tenho que sempre dar return nas variaveis locais?

public class QualquerCoisa { public static void main (String [] args){ System.out.println("O quadrado de 3 eh: " + calculaPotencia(3,2)); System.out.println("O cubo de 12 eh: " + calculaPotencia(12,3)); } public static int calculaPotencia(int base, int expoente){ // ... return 0; } }

Rode o codigo. Não funciona? É claro… por que vc retorna 0 para a chamada do método, né?

Então se vc colocasse nesse método o algoritmo para calcular potencias e retornar o resultado… :wink: