使用String值获取Factorials

时间:2014-07-25 22:07:02

标签: java recursion data-structures

我做了一个名为" Factorial"使用递归,它工作得很好,但这是我只输入一个整数值。代码如下

import java.util.*;

public class Factorial {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int x, i;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter a Factorial");
    x=keyboard.nextInt();
    i = factorial(x);

    System.out.println(i);
}

  public static int factorial(int x)
  {
      int result;

         if(x==1)
           return 1;

         result = factorial(x-1) * x;
         return result;
  }

}

但是现在我想调整代码,这样我就不会接受整数值,而是输入一个类似" 4的字符串值!"或" 10!"或" 100!"并且代码将提取并转换数值,以便将其传递给阶乘类。 我想知道是否有一种快速的方法来做到这一点。任何帮助,将不胜感激。谢谢:))

2 个答案:

答案 0 :(得分:1)

您应该查看此链接以获取一些详细信息:Get int from String, also containing letters, in Java

在那里,我找到了这个答案:

  

NumberFormat类只会解析字符串,直到达到a   不可解析的角色:

((Number)NumberFormat.getInstance().parse("123e")).intValue()
     因此,

将返回123。

以字符串形式获取输入,并使用它来获取整数部分。

如果您遇到问题,请告诉我。

答案 1 :(得分:0)

您只需使用Scanner.nextLine(),删除所有!,然后将生成的String解析为int

x = Integer.parseInt(keyboard.nextLine().replaceAll("!", ""));

而不是

x = keyboard.nextInt();

或者,你可以在keyboard.useDelimiter("!|\\n");行之前写x = keyboard.nextInt()并保持后一行相同。