Duvida em parseInt - parseDouble

4 respostas
V

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); 
}

}

4 Respostas

S

Divisão de int por int é int.

res = (1 + (1.0/num));
V

Nossa… Valeu mesmo Schuenemann
Deu certo…
Mas porque o 1 tem q ser 1.0…desculpa eu nao entendi… :oops: :oops: :oops:

L

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.

V

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 :wink:

Criado 26 de abril de 2006
Ultima resposta 26 de abr. de 2006
Respostas 4
Participantes 3