Olá pessoal,
Sou iniciante em Java e estou com uma duvida num programinha que a minha professora de matemática solicitou que fizesse…
Consiste no calculo de uma equação: (1+1/n) elevado a n, onde n é informado pelo usuário.
Eu fiz o programa, mas algo esta errado…pois quando rodo e digito por exemplo n=2 o resultado deveria ser 2.25…porem meu resultado só dá 1.0, onde estou errando…por favor me ajudem!
import javax.swing.*;
public class Numero
{
public static void main(String y[])
{
int num;
String n;
double res, z;
n=JOptionPane.showInputDialog("Informe o valor");
num=Integer.parseInt(n);
res = (1 + (1/num));
z= Math.pow(res,num);
JOptionPane.showMessageDialog(null, "Resultado é:" + z);
}
}
Divisão de int por int é int.
res = (1 + (1.0/num));
Nossa… Valeu mesmo Schuenemann
Deu certo…
Mas porque o 1 tem q ser 1.0…desculpa eu nao entendi… :oops: :oops: :oops:
Pq vc esta realizando os calculos com tipo int. Em calculos de tipo int o java não considera a parte fracionária do resutado sendo assim (1 / 2) resuta em 0 e não em 0.5.
Para que java considere a parte fracionária do resutado de um calculo é necessário usar tipo double que são valores que apresentam parte fracionaria como 1.0, 1.6, 10.1, etc.
Exemplo: (1.0 / 2) resulta em 0.5.
Valores int (inteiros) são numeros comuns que não apresentam parte fracionária como 1, 7, 9, 12, etc. Por isso a expresão estava sendo executada assim:
num = 2
res = (1 + (1/num)); // Resutado é 1.0
z= Math.pow(res,num); // 1.0 elevado a 2 é 1.0 pq 1x1 é 1.
Sendo assim seu z seria 1.0 sempre que vc digitasse um valor maior que 1.
Licker,
perfeito…obrigada pela explicação!!
Entendi, na verdade eh algo do java né…meu raciocinio estava correto…eu pensei que tivesse problemas no parse.Int…
Valeu vc foi perfeito 