如何使用java替换三分之二、五分之一、百分之二等变量

如何使用java替换三分之二、五分之一、百分之二等变量,java,Java,我希望以名称形式输入,比如三分之二或五分之一,我希望我的系统将其转换为数字形式并给出答案 奎:三十分之二是 系统应输出20 如何编程?您可以尝试从 one ->1 two ->2 three ->3 four ->4 and so on 另一方面: half ->2 third ->3 fourth ->4 然后创建一个double,将第一个值除以第二个值。。 至少将该值与第三个值相乘(您可以使用该值的第一个映射),就得到了结果 至少,这并不容易,

我希望以名称形式输入,比如三分之二或五分之一,我希望我的系统将其转换为数字形式并给出答案

奎:三十分之二是

系统应输出20


如何编程?

您可以尝试从

one ->1 
two ->2
three ->3
four ->4
and so on
另一方面:

half ->2
third ->3
fourth ->4
然后创建一个double,将第一个值除以第二个值。。 至少将该值与第三个值相乘(您可以使用该值的第一个映射),就得到了结果


至少,这并不容易,因为您必须手动构建字符串和int之间的映射。

作为一个一般问题,自然语言处理(NLP)——您正在谈论的是——是一个困难的开放式问题

有很多图书馆都有这方面的资料。如果您想要背景,请查看此处:

或者在维基百科中查找自然语言处理

然而,你说你想这样做,你是新的编程。 你需要做的第一件事就是把问题分解。这就是我们解决编程问题的方法

因此,首先尝试编写一个程序,可以读取包含单个单词的字符串并将其映射到一个数字。 例如,“一”输出1,“两”输出2,“三十”输出30

接下来,试着编写一个程序,将一个字符串切割成它的组成词。 您可能想在这里使用数组。 这是一个称为标记化的过程,Java有一个内置的
StringTokenizer
。 您可能想自己编写代码,但您正在学习,现在可能是开始学习使用库代码的时候了

当你得到这些数字时,试着将它们组合起来,这样你的程序就可以将“37”转换成37(即100以下的数字)。 这个新程序应该结合你的程序的思想,这样你就可以转换“三十”和“七”以及一个可以拆分单词的程序

这是我们在编程中做的另一件事——组合东西。 我们把它分解成更小的问题来解决它们,然后重新构建它们来解决更大的问题。 (如果我光顾你,我很抱歉,但我不知道你的经历)

之后,您可以添加处理“537”的逻辑。 再一次,请注意,将五加上一百就像转换五,然后找到一个标记,告诉您将刚才看到的乘以100。 你可以继续处理数千,十万等等

或者你可以分成分数。 这是相似的,但你只是有一个不同的词汇。 七点四十秒=7/42

作为一项学习挑战,我建议如果你的程序能处理诸如“4889的四十二个九十三分之一”之类的事情,你会取得很大的进步

easy解决方案输出0.000508(42/93)*889的浮点答案。 额外信贷解决方案输出2/3937-(42/93)*889可以简化为一个有理数,即2/3937

老实说,如果你能应付“99的9/9”,你会做得很好。 请注意,第一个单词是分子(n)。第二个是分母(d)。第三个总是“of”。第四个字是十(t)或单位(u)。如果第四个词是单位,那么你就完成了,否则如果有第五个词,那就是单位。
这种情况下的答案是n/d*(t*10+u)。如果十位数或单位缺失,它们显然是零。
PS:如果你反对有人输入九十零,你可能需要对零进行特殊处理。很明显,它的意思是90,但我们不是用英语说的

向我们展示您迄今为止尝试过的内容我想创建这个,我是编程新手,所以我还没有尝试过。感谢您的帮助,但这样我们必须为每个数字定义数字,这是不可能的。假设我们需要找出两千个中的三分之二,我们不能这样做。好吧,你可以试着建立你自己的语言解析器。期待一个“两千”格式将使它变得容易,因为你只需要得到规则。比如“teen表示+10”,那么八个teen将被解析为八(8),而teen则被解析为+10,这样你就可以得到18。这种方法需要大量的工作,但是您需要重建数字规则。或者你找到一个图书馆。我不会将其作为答案发布,但我没有足够的声誉作为评论发布;)PS:也许这会对你有所帮助,尽管它在Javascript:thnks中有很多。。这肯定会对我有帮助…-)