如何在Java中计算十进制数的阶乘?
我做了一个函数来计算一个数字的阶乘,但是当我写一个十进制数或一个字符时,“迷你应用程序”就不起作用了。当用户写入字符时,如何计算小数的阶乘并向用户发送错误消息如何在Java中计算十进制数的阶乘?,java,Java,我做了一个函数来计算一个数字的阶乘,但是当我写一个十进制数或一个字符时,“迷你应用程序”就不起作用了。当用户写入字符时,如何计算小数的阶乘并向用户发送错误消息 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // BOTON CALCULAR String valortextfield = jTex
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));
}
}
公共类Metodos{
公共双整数阶乘(整数){
如果((数值<0)| |(数值>50)){
返回biginger.ZERO;
}否则如果(数字==0){
返回BigInteger.1;
}否则{
返回BigInteger.valueOf(numero).multiply(阶乘(numero-1));
}
}
谢谢。在您的
parseInt()
呼叫周围放置一个try
/catch
块,并查找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
}
这不仅会捕获像“123.45”这样的数字,还会捕获其他非数字输入。使用扫描仪
java.util.Scanner scanner = new Scanner(System.in);
while (!scanner.hasNextInt())
scanner.next();
System.out.println(scanner.next());
“不起作用”是什么意思?BTW 51!不是0。我的意思是它只适用于整数,如果a引入小数或字符,它会给我一个错误。这是因为小数和其他字符不是整数。你希望发生什么?是的,当然,我想知道如何管理它也与小数。你必须首先确定你想要发生什么,然后你就可以(在我们的帮助下)可以实现这一点。你希望发生什么?“这需要一个基数。”为什么?大多数人不会假设基数为10?我的错。我被Javascript parseInt()搞混了,它也接受八进制和十六进制数字。我将从我的答案中编辑它。