如何计算Java中十进制数的阶乘?

时间:2014-04-23 16:00:05

标签: java

我做了一个函数来计算一个数字的阶乘,但是当我写一个十进制数或一个字符时,“迷你应用程序”不起作用。如何计算小数的阶乘,并在用户写字符时向用户发出消息错误。?

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     // BOTON CALCULAR

     String valortextfield = jTextField1.getText();
     int numero = Integer.parseInt(valortextfield);
     Metodos metod = new Metodos();

     BigInteger resultado = metod.factorial(numero);
     String valorAmostrar= resultado.toString();

     jTextArea1.setText(valorAmostrar);

    }    

方法:

public class Metodos {

    public BigInteger factorial (int numero ){
    if ((numero < 0)||(numero >50)) {

        return BigInteger.ZERO;


    } else if (numero==0){

        return BigInteger.ONE;

    } else {
        return BigInteger.valueOf(numero).multiply(factorial(numero-1));
    }
}

感谢。

2 个答案:

答案 0 :(得分:0)

try电话周围加catch / parseInt()个阻止,并查找NumberFormatException

String valortextfield = jTextField1.getText();
try
{
   int numero = Integer.parseInt(valortextfield);
   Metodos metod = new Metodos();

   BigInteger resultado = metod.factorial(numero);
   String valorAmostrar= resultado.toString();

   jTextArea1.setText(valorAmostrar);
}
catch (NumberFormatException e)
{
   // Show an error message here or whatever is appropriate
}

这不仅可以捕获&#34; 123.45&#34;等数字,还可以捕获其他非数字输入。

答案 1 :(得分:0)

使用扫描仪

java.util.Scanner scanner = new  Scanner(System.in);
while (!scanner.hasNextInt()) 
  scanner.next();
System.out.println(scanner.next());