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… 