Calculo de Fatorial

Ola pessoal, estou desenvolvendo uma calculadora simples com tratamento de exceções, porém estou com problema no calculo do fatorial, a classe esta compilando(mas ele nao calcula na classe principal, e chama a exceção). Segue o codigo, se puderem me ajudar, agradeço.

public class Fatorial {
	double fat;

	public double Fatorial(double a)
	{

	}

		public double fat(double a, double fat)
		{
		if(a>0)
		if(a<=1)
		return 1;


		else{

		fat=a*fat(a-1);
				return fat;}
		else
				throw (new ExceptionNumNegativo ("Não é possível  Calcular raizes de números negativos!"));
	}



	      }

Por favor idente direito o teu código…

Por que fat está recebendo dois valores por parâmetro (e como ele está compilando se não existe um método fat de um só parâmetro)?

confesso que demorei um poco pra intender seu codigo, mais vão algumas sugestões:

public double Fatorial(double a)
{

}  

não sei se isso era o construtor, mais no construtor vc nao poe o tipo de retorno, ficaria simplesmente :

public Fatorial(double a)
{

}  

quanto a esse metodo fat, que acredito que calcule o fatorial, em relação a esses if:

if(a>0)
if(a<=1)
return 1;

esses ifs vc pode substituir por:

if (a > 0)
if ( a == 1 )
return 1;
else{
//…
//coloque um return aqui tb, acho que esta faltando
}
else{//…
}

uma coisa que seria legal por causa da legibilidade, por isso aconselho dessa forma
eu nao testei o seu codigo, mais o motivo de não executar o que vc quer, acredito que seja por que, em algum momento esta sendo chamado o fat com 0 ou um numero negativo…

poe um sistem.out na primeira linha do metodo exibindo a variavel a, e ve o q q aparece…

eu to sem acesso a minha maquina agora (to formatando ela e usando um server aki…), mais se nao descobrir o erro assim eu tento descobrir tb… (talvez seja a falta do return como comentei no codigo…)

Apenas uma coisa, que eu até me questionei

[quote] não sei se isso era o construtor, mais no construtor vc nao poe o tipo de retorno, ficaria simplesmente :

public Fatorial(double a)
{

} [/quote]

Fatorial é o tipo de retorno do construtor. Certo? Então a gente sim põe o tipo de retorno no construtor.

eu vo da uma pesquisada, mais ao que eu conheço(claro que sei que posso estar enganado) o metodo construtor consiste em um metodo contendo apenas o tipo de acesso e depois o nome do metodo (que deve ser exclusivamente o mesmo nome da classe, sendo java case sensitive) e depois os atributos recebidos entre parenteses…

o retorno é sempre um objeto da classe em questão…

--------------------editando--------------------------------------

conforme esse tutorial

Você tem razão, http://java.sun.com/docs/books/tutorial/java/javaOO/constructors.html. Um construtor com tipo de retorno passa a ser na verdade um método com nome do construtor.
Eu fiquei na dúvida na hora.

OBS: o eclipse dá warning ao usar método com nome de construtor.

Uma dica útil. Se você tem um return dentro de um if, ou lança uma exceção não existe sentido em colocar um else.
Aliás, esse warning também pode ser ligado nas IDEs. O bom é que isso evita identação descenessária, o que torna o código mais legível.

Agora… é impressão minha ou a poucos dias atrás já foi aberto um tópico sobre fatorial? Frenkba, vc é colega de sala do Faoli?
http://www.guj.com.br/posts/list/89829.java

num conheço esse faioli nao, rs.
olha galera, desculpe por ter colocado o codigo incompleto,
mas ja consegui resolver o problema, vlw pela atenção!
segue o codigo:

public class Fatorial {

	double fat=1;
	double fat2=1;


	public double fat(double a)throws ExceptionNumNegativo
	{
		if(a==0)
		return 1;
		if(a>0)
		{
		for(int i=2;i<=a;i++)
		{
		fat*=i;
		}


		return fat;
		}
		else

		throw (new ExceptionNumNegativo ("Não é possível  Calcular raizesde números negativos!"));


}

public double fat1(double b)throws ExceptionNumNegativo
	{
		if(b==0)
		return 1;
		if(b>0)
		{
		for(int i=2;i<=b;i++)
		{
		fat2*=i;
		}


		return fat2;
		}
		else

		throw (new ExceptionNumNegativo ("Não é possível  Calcular raizesde números negativos!"));


}



}

usei dois metodos para fatoriais, pois na classe principal da calculadora, ao calcular o fat do textfiled 2 ele calculava errado…olha ai o codigo da classe principal…
http://pastebin.com/f62df313b