我做了一个名为" 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!"并且代码将提取并转换数值,以便将其传递给阶乘类。 我想知道是否有一种快速的方法来做到这一点。任何帮助,将不胜感激。谢谢:))
答案 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()
并保持后一行相同。