Java 使用字符串值获取阶乘
我使用递归创建了一个名为“Factorial”的类,它工作得非常好,但这是我只输入整数值的时候。代码如下Java 使用字符串值获取阶乘,java,recursion,data-structures,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 Scanne
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!”,代码将提取并转换数值,然后将其传递到factorial类中。
我想知道是否有一种快速的方法可以做到这一点。任何帮助都将不胜感激。谢谢:)有关详细信息,请查看此链接: 在那里,我找到了这个答案: NumberFormat类将只解析字符串,直到它到达 不可解析字符:
((Number)NumberFormat.getInstance().parse("123e")).intValue()
因此将返回123
以字符串的形式获取输入,并使用该字符串获取输入的整数部分
如果有问题,请告诉我。您只需使用
Scanner.nextLine()
,删除任何
s,然后将生成的字符串
解析为int
x = Integer.parseInt(keyboard.nextLine().replaceAll("!", ""));
而不是
x = keyboard.nextInt();
或者,您可以只编写
keyboard.useDelimiter(“!\124;\\ n”)在x=keyboard.nextInt()
行之前添加code>,并保持后一行不变。。。。它现在不正是你想要的那样工作吗keyboard.nextInt()
已经可以读取数字直到一个分词(行尾,或者在本例中是一个!”
字符)。那么您是在谈论类似计算器解析器的东西,因为如果您没有,您所做的应该可以工作,因为如果我输入4,您正在使用nextInt()
@Jashaszun!,由于输入不匹配,程序将崩溃-字符串条目为.nextLine(),整数值为.nextInt(),您应该知道,如果您有字符串值,您将获得运行时exception@user3ffgfgfgfgfg50064是的,有点像计算器解析器!我有严重的精神障碍,我想不出如何解码it@ProgrammingNewb啊,在阅读了文档之后,我意识到,Scanner
通过空格将流分割成标记。所以你是对的,它不会工作。伙计,这很好,我输入了那一行,然后我必须导入java.text.*,然后我添加了公共静态void main(String[]args)抛出ParseException,它运行得很好,谢谢你的输入:)