Uso de pacotes - Não executa método !(RESOLVIDO)

[/b][b]Pessoal, preciso fazer um pequeno programa que calcule a raiz cúbica, ou a raiz quinta, ou a raiz décima de um número.
Para isso preciso criar dois pacotes. Em um deles deverá haver uma classe com três métodos, um para calcular cada tipo de raiz.
No outro pacote deve haver uma classe com os métodos para se obter a raiz desejada bem como o número a ser extraído a raiz. E também deverá haver o método main() para iniciar a aplicação.

Pois bem, criei esses pacotes com os respectivos métodos, mas não está funcionando, quando chamo um dos métodos para a extração da raiz, parece que ele não é invocado, pois ao pedir para ser impresso o resultado, o programa imprime o número que informei.

Alguém poderia me ajudar a resolver isso, por favor ?
O código está logo abaixo:

package calculaRaizMetodos;

public class CalculaRaizMetodos
{	
                public static double raiz;

	public static double calculaCubica(double num, double pot)
	{
		num = Math.pow(num,pot);
		return num;
	}
	
	public static double calculaQuinta(double num, double pot)
	{
		// Teste
		System.out.println("O número é : ");
		System.out.println(num);
		System.out.println("A potência é : ");
		System.out.println(pot);
		// Final de Teste
		
		num = Math.pow(num,pot);
		return num;
	}
	
	public static double calculaDecima(double num, double pot)
	{
		num = Math.pow(num,pot);
		return num;
	}
}
package calculaRaizExecuta;

import calculaRaizMetodos.CalculaRaizMetodos;
import javax.swing.JOptionPane;

public class CalculaRaizExecuta
{
    public static double num;
    public static double pot;
    public static String mensagem = "Informe um tipo de raiz:\n" +
    		                        " 3 - Raiz cúbica\n" +
    		                        " 5 - Raiz quinta\n" +
    		                        "10 - Raiz décima\n";
    public static String numero;
    public static double raiz;
    
    
    public static void capturaDado()
    {
    	String type = JOptionPane.showInputDialog(null,mensagem);
    	double tipo = Double.parseDouble(type);
    	
    		
    	if(tipo == 3)
    	{
    		pot = 1/3;
    	}
    	
    	if(tipo == 5)
    	{
    		pot = 1/5;
    	}
    	
    	if(tipo == 10)
    	{
    		pot = 1/10;
    	}
    	
    	String numero = JOptionPane.showInputDialog(null,"Informe o número a ser extraído a raiz");
    	num = Double.parseDouble(numero);   	
    }
    
    public static void invocaMetodo(double num, double pot)
    {
    	if(pot == 1/3)
    	{
    		CalculaRaizMetodos.calculaCubica(num, pot);	
    	}
    	
    	if(pot == 1/5)
    	{
    		CalculaRaizMetodos.calculaQuinta(num, pot);
    	}
    	
    	if(pot == 1/10)
    	{
    		CalculaRaizMetodos.calculaDecima(num, pot);
    	}
    }
    
    public static void mostraDado()
    {   	
    	System.out.println("A raiz é:");
    	System.out.println(num);
    }
	
	public static void main(String[] args)
	{
       capturaDado();
       mostraDado();
	}
}

Também desejo trocar a variável de retorno, quero que o método a calcular a raiz retorne uma variável diferente de que não seja num, ou seja, quero, por exemplo, que uma variável double raiz receba a raiz e seja retornada pelo método. Assim:

raiz = Math.pow(num,pot);
      return raiz;

Mas se eu fizer isso dá um erro no dizendo que raiz não pode ser resolvido no pacote calculaRaizExecuta.

Valeu aí, galera !

Valder, vc fez isso pq acreditou na história que dizem que em JAVA toda passagem é por referencia, quando isso não é verdade. Já fiz uns teste para isso uma vez com um amigo, e não é isso que acontece. Faz os métodos que calulam a potencia retornarem o resultado da operacao, e aí usa esse resultada para atribuir a sua varável num da classe CalculaRaizExecuta.

renzonuccitelli

Já havia feito isso.
Mas, só para você ver, criei uma variável double chamada raiz em cada pacote.
Os métodos do pacote calculaRaizMetodos recebem os parâmetros num e pot, fazem os cálculos, atribuem o resultaod do cálculo à variável raiz e retornam a variável raiz.

No pacote calculaRaizExecuta criei uma nova variável raiz e atribui a ela o resultado retornado pelos métodos do outro pacote.

mas está imprimindo zero como resultado !!! :frowning:

Acho que o problema está na chamada do método, pois fiz um teste lá na calculaQuinta e não impirme nada, veja !
Parece também que há um problema na atribuição dos números 1/3, 1/5 e 1/10 para a variável pot, acho que tenho que informar que são double, mas não sei como fazer isso.

O novo código está logo abaixo, se puderem ajudar, agradeço mjuito:

package calculaRaizMetodos;

public class CalculaRaizMetodos
{	
	public static double raiz;
	public static double calculaCubica(double num, double pot)
	{
		raiz = Math.pow(num,pot);
		return raiz;
	}
	
	public static double calculaQuinta(double num, double pot)
	{
		// Teste
		System.out.println("O número é : ");
		System.out.println(num);
		System.out.println("A potência é : ");
		System.out.println(pot);
		// Final de Teste
		
		raiz = Math.pow(num,pot);
		return raiz;
	}
	
	public static double calculaDecima(double num, double pot)
	{
		raiz = Math.pow(num,pot);
		return raiz;
	}
}
package calculaRaizExecuta;

import calculaRaizMetodos.CalculaRaizMetodos;
import javax.swing.JOptionPane;

public class CalculaRaizExecuta
{
    public static double num;
    public static double pot;
    public static String mensagem = "Informe um tipo de raiz:\n" +
    		                        " 3 - Raiz cúbica\n" +
    		                        " 5 - Raiz quinta\n" +
    		                        "10 - Raiz décima\n";
    public static String numero;
    public static double raiz;
    
    
    public static void capturaDado()
    {
    	String type = JOptionPane.showInputDialog(null,mensagem);
    	double tipo = Double.parseDouble(type);
    	 		
    	if(tipo == 3)
    	{
    		pot = 1/3;
    	}
    	
    	if(tipo == 5)
    	{
    		pot = 1/5;
    	}
    	
    	if(tipo == 10)
    	{
    		pot = 1/10;
    	}
    	
    	String numero = JOptionPane.showInputDialog(null,"Informe o número a ser extraído a raiz");
    	num = Double.parseDouble(numero);   	
    }
    
    public static void invocaMetodo(double num, double pot)
    {
    	if(pot == 1/3)
    	{
    		raiz = CalculaRaizMetodos.calculaCubica(num, pot);	
    	}
    	
    	if(pot == 1/5)
    	{
    		raiz = CalculaRaizMetodos.calculaQuinta(num, pot); 		
    	}
    	
    	if(pot == 1/10)
    	{
    		raiz = CalculaRaizMetodos.calculaDecima(num, pot);
    	}
    }
    
    public static void mostraDado()
    {   	
    	System.out.println("A raiz é:");
    	System.out.println(raiz);
    }
	
	public static void main(String[] args)
	{
       capturaDado();
       mostraDado();
	}
}

Bom, se o problema for infomar, faça um casting, colocanto (double) na frente do 1 e do 3.

Já fiz isso também, mas continua dando o mesmo problema.
Caramba, não consigo fazer isso funcionar. Será que estou erradno na chamada dos métodos ?

Valder,

Faltou vc chamar o método “invocaMetodo” na sua main…

Espero tb que vc tenha percebido que os 3 métodos faze a mesma coisa, então vc poderia ter usado só um método calcular raiz, já que vc passar a potencia como parametro. Ou então vc nem precisava passar potência como parametro nos 3 métodos, já que vc já sabe de ante-mão qual valor vai ser…

Não havia percebido isso. Mas agora chamei o método e continua com o mesmo problema :cry:
Sim, sei que os métodos fazem as mesmas coisas, mas é que o professor quis assim !

Se puderem continuar ajudando, agradeço, pois esse pequeno aplicativo está me tirando o sono.

aqui rodou direito com os castings, acho que vc deve ter esquecido deles dentro dos laços tb:

[code]public class CalculaRaizExecuta
{
public static double num;
public static double pot;
public static String mensagem = “Informe um tipo de raiz:\n” +
" 3 - Raiz cúbica\n" +
" 5 - Raiz quinta\n" +
“10 - Raiz décima\n”;
public static String numero;
public static double raiz;

public static void capturaDado()
{
	String type = JOptionPane.showInputDialog(null,mensagem);
	double tipo = Double.parseDouble(type);
	 		
	if(tipo == 3)
	{
		pot = (double)1/(double)3;
	}
	
	if(tipo == 5)
	{
		pot = (double)1/(double)5;
	}
	
	if(tipo == 10)
	{
		pot = (double)1/(double)10;
	}
	
	String numero = JOptionPane.showInputDialog(null,"Informe o número a ser extraído a raiz");
	num = Double.parseDouble(numero);  
	invocaMetodo(num,pot);
}

public static void invocaMetodo(double num, double pot)
{
	
	if(pot == (double)1/(double)3)
	{
		raiz = CalculaRaizMetodos.calculaCubica(num, pot);	
	}
	
	if(pot == (double)1/(double)5)
	{
		raiz = CalculaRaizMetodos.calculaQuinta(num, pot); 		
	}
	
	if(pot == (double)1/(double)10)
	{
		raiz = CalculaRaizMetodos.calculaDecima(num, pot);
	}
}

public static void mostraDado()
{   	
	System.out.println("A raiz é:");
	System.out.println(raiz);
}

public static void main(String[] args)
{
   capturaDado();
   mostraDado();
}

}[/code]

Opaaaaaaaaa !!!
Legaaaaallll, agora siimmmmmm !!!

Valeu aí mesmo, obrigadão !

Precisando de ajuda em matemática ou física é só gritar aí ! :lol: