GARANTIR DESCONTO

Fórum Math.pow entre métodos. #566003

09/04/2009

0

Boas. Tenho estado a testar a classe Math.pow(x,y) que efectua a x elevado a y. A minha dúvida reside no facto de ter valores completamente alterados quando introduzo por exemplo:
Math.pow(string.charAt(2), 5);
que basicamente é o valor na "casa" 2 da strong elevado a 5. Por algum motivo isto retorna-me valores que não estou à espera :/ Será que não se pode utilizar um método dentro da classe Math? [/code]
Diogopc

Diogopc

Responder

Post mais votado

09/04/2009

Experimenta converter os valores para double
Math.pow(Double.valueOf(string.charAt(2)).doubleValue(), 5.0);  

Manuel Leiria

Manuel Leiria
Responder

Gostei + 1

Mais Posts

09/04/2009

Diogopc

Continuo exactamente com o mesmo problema :/ Vou postar aqui o código completo do programa para o caso de alguém ter alguma ideia do que poderá estar a causar tal problema
import java.util.*;
public class Narc {

	public static void main(String[] args) {
		
			  Scanner teclado = new Scanner(System.in);

			  int numero = teclado.nextInt();
			  String s = Integer.toString(numero);

			  int tamanho = s.length();
		              double soma = 0;
			
			for(int i = 0; i < expoente; ++i){
			soma = soma + Math.pow(s.charAt(i), tamanho);
			  }
			System.out.println(soma);
			
			     
	}
}
Basicamente o que o programa faz (ou devia fazer :roll: ) é pegar num número introduzido pelo utilizador, introduz esse número numa string e vê o seu tamanho (quantos números tem). O tamanho da número irá ser o expoente ao qual vou elevar cada um dos números que compoem o número inicial (por exemplo para o número 154: 1^3 + 5^3 + 4^3). Já tentei substituir o s.charAt() por um qualquer outro número e verifiquei que o método Math.pow() funciona na perfeição e também já tentei a solução proposta pelo utilizador manuel.leiria, sem sucesso. Só me resta "culpar" a introdução do s.charAt() dentro de um método :/
Responder

Gostei + 0

09/04/2009

Vagner Planello

Eu acho que o problema esta acontecendo porque o char é um tipo numerico, entao o metodo pow esta fazendo a operacao com o valor numerico do caracter e nao com o valor que ele representa. Experimenta algo como:

 String s = "123";
        for (int i = 0 ; i < s.length() ; i++) {
            Double d = new Double(""+s.charAt(i));
            System.out.println(d);
        }

isso faz com que o caracter seja visto como uma String e nao como um char, assim ele não é interpretado como um tipo numerico
Responder

Gostei + 0

09/04/2009

Diogopc

Funciona na perfeição. Obrigado Vagner !
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar