[b]Bom dia pessoal!
Tenho que fazer o seguinte exercicio, e estou aqui quebrando a cabeça devido a minha fraqueza com java, alguem pode ajudar?
Escrever um metodo em java que realize o calculo da potencia de um numero real A por um numero inteiro b, sem a utilização do math.pow.
Segue o esboço do meu codigo abaixo.
Sei que não posso simplesmente multiplicar a base pelo expoente.[/b]
[code]import javax.swing.*;
public class Exercicio01 {
public static float exp(float n1)
{
int base;
float total=0;
if (base ==0)
total=1;
else
for(int i=0;i<n1;i++){
total *= n1;
i++;
return total;
}
}
//metodo principal
public static void main(String args[]){
//Declaração de Variáveis
float num1;
int num2;
//Entrada de Dados do Usuário
num1 = Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));
num2 = Integer.parseInt(JOptionPane.showInputDialog("Digite outro número"));
//Exibição dos dados
JOptionPane.showMessageDialog(null, exp(num1));
}
} [/code]
Agora me tira a duvida, ta dando pau na hora de passar como parametro isso aqui:
[code]import javax.swing.*;
public class Exercicio01 {
public static float exp(float base, float expoente)
{
float resultado=0;
if(base ==0){
resultado=0;
}
else
for(int i=1; i< expoente;i++){
resultado=base*i;
}
}
//metodo principal
public static void main(String args[]){
//Declaração de Variáveis
float base;
float expoente;
//Entrada de Dados do Usuário
base = Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));
expoente = Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));
//Exibição dos dados
JOptionPane.showMessageDialog(null, exp(base, expoente));
}
}
[/code]
Passo dois floats e o maldito me fala q não posso passar parametro float…
Erro dado pelo eclipse
[[i][b]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
This method must return a result of type float
at Exercicio01.exp(Exercicio01.java:4)
at Exercicio01.main(Exercicio01.java:30)
Como nosso amigo ali já disse, seu problema é de lógica e matematica mesmo
É só vc passar para o método o valor da base, e o valor da potencia
dai vc cria um for que repete o numero de vezes da potencia, e dentro do for coloca uma variavel acumulando o seu próprio valor vezes o valor da base digitada
mais ou menos assim
for (i = 0; i < potencia; i++) {
resultado *= base;
}
Simples
[quote=Leonardo Augusto]Cara,
Agora me tira a duvida, ta dando pau na hora de passar como parametro isso aqui:
[code]import javax.swing.*;
public class Exercicio01 {
public static float exp(float base, float expoente)
{
float resultado=0;
if(base ==0){
resultado=0;
}
else
for(int i=1; i< expoente;i++){
resultado=base*i;
}
}
//metodo principal
public static void main(String args[]){
//Declaração de Variáveis
float base;
float expoente;
//Entrada de Dados do Usuário
base = Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));
expoente = Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));
//Exibição dos dados
JOptionPane.showMessageDialog(null, exp(base, expoente));
}
}
[/code]
Passo dois floats e o maldito me fala q não posso passar parametro float…
Erro dado pelo eclipse
[[i][b]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
This method must return a result of type float
at Exercicio01.exp(Exercicio01.java:4)
at Exercicio01.main(Exercicio01.java:30)
[/b][/i][/quote]
vc tem um método com retorno, mas nao ta retornando nada Oo
tem que retornar um valor (do tipo float) ueh
e sua conta no for ali vai ficar errada
faz que nem expliquei ali emcima
[code]import javax.swing.*;
public class Exercicio01 {
public static float exp(float base,float expoente)
{
float resultado=1;
if(base ==0){
resultado=0;
}
else
for(int i=0; i< expoente;i++){
resultado*=base;
}
return resultado;
}
//metodo principal
public static void main(String args[]){
//Declaração de Variáveis
float base;
float expoente;
//Entrada de Dados do Usuário
base = Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));
expoente = Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));
//Exibição dos dados
JOptionPane.showMessageDialog(null, exp(base, expoente));
}
}
[code]import java.util.Scanner;
public class pow{
public static void main(String[] args){
Scanner entrada = new Scanner(System.in);
System.out.print("Valor da base: ");
int base = entrada.nextInt();
System.out.print("Valor do expoente: ");
int exp = entrada.nextInt();
System.out.print(base+" elevado a "+exp+": "+pow(base, exp));
}
// Parte que te interessa do código
public static int pow(int b, int e){
if(e == 0)
b = 1;
int total = b;
while(e > 1){
total *= b;
e--;
}
return total;
}
}[/code]EDIT: adicionei condição para expoente = 0… Vlw pmlm
[quote=Vingdel]EDIT: adicionei condição para base = 0…
[/quote]
Condição errada.
Quando a base é 0, o resultado é zero. No teu caso vai dar um.
Pelo contrário, quando o expoente é 0 o resultado deve ser um. No teu caso vai dar zero.
[quote=pmlm][quote=Vingdel]EDIT: adicionei condição para base = 0…
[/quote]
Condição errada.
Quando a base é 0, o resultado é zero. No teu caso vai dar um.
Pelo contrário, quando o expoente é 0 o resultado deve ser um. No teu caso vai dar zero.[/quote]
Opa pmlm, falta de atenção mesmo… Corrigi lá. Obrigado!
Relembrar é reviver kkk[/quote]
Boa, aplicou bem a propriedade… Só acho que esse for do seu método getPotencia() ficaria melhor se fosse um while(). DeJaVu.
Ahhh Lembrar é reviver… Relembrar é reviver de novo… kkk