Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Word更改为Java数字_Java - Fatal编程技术网

将Word更改为Java数字

将Word更改为Java数字,java,Java,对于我当前的代码,我正在创建一个单词计算器,输入单词来表示数字,并在代码中完成计算。要求在控制台中输入两个数字和一名操作员。我能够将输入解析为三个部分:第一个数字、运算符和第二个数字 我的问题是,当我将单词转换成数字形式时,我应该如何处理?例如,如果用户输入: 七百八十八加九十五 如何将其转换为788和95,以便在代码中进行计算?我的输入需要增加到1000 这是我划分输入的代码的一部分 import java.util.Scanner; public class TextCalc2 { publ

对于我当前的代码,我正在创建一个单词计算器,输入单词来表示数字,并在代码中完成计算。要求在控制台中输入两个数字和一名操作员。我能够将输入解析为三个部分:第一个数字、运算符和第二个数字

我的问题是,当我将单词转换成数字形式时,我应该如何处理?例如,如果用户输入:

七百八十八加九十五

如何将其转换为788和95,以便在代码中进行计算?我的输入需要增加到1000

这是我划分输入的代码的一部分

import java.util.Scanner;
public class TextCalc2 {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
String in = input.nextLine();
in = in.toLowerCase();
while (!in.equals("quit")) {
    if (in.contains("plus")){
        String number1 = in.substring(0, in.indexOf("plus") - 1);
        String number2 = in.substring(in.indexOf("plus") + 5, in.length());
        String operator = in.substring(in.indexOf("plus"),in.indexOf("plus") + 5);
        System.out.println(number1);
        System.out.println(operator);
        System.out.println(number2);
    }
}

首先,如果您对操作进行了硬编码,则在拆分输入的方式上存在问题。我建议用空格分隔输入,然后分别分析输入的每个部分

您将有不同类型的字在您的输入,一个是一位数,两位数,操作和100

然后你应该找到你输入的第一个单词属于哪一类,如果有的话——它将是两位数,否则就去其他类中搜索,直到找到为止。然后根据类别决定你应该怎么处理它,如果它是一个数字,用它的等价物替换它。如果是双位数,则拆分并替换每个数字;如果是双位数,则将其存储并从中剪切输入数组,以便将第一个值和第二个值分开;如果是百位数,则将前一个单位数乘以100

在这个解析步骤之后,您将有类似于{700,88}、{95}和plus操作的操作。现在很容易使用parse方法将每个字符串转换为其整数值,然后应用该操作

顺便说一句,对常量使用Enum会更容易,只需使用它们的序数值即可。还可以使用Jared对您的两位数值所做的注释


如果您还有问题,请告诉我。

您需要制定具体的规则,以确定哪些是可接受的输入。七十一行吗,但你不接受七十一?坦白地说,我只需要硬编码十几岁、二十岁、三十岁、四十岁等等,然后挑选出这些单词。识别最多1000个数字非常容易。请使用以下方法:。但是使用equals方法在数组中找到正确的数字。在十和一之间应该有一个-。我决定使用number1.containssundreds来进一步解析这些数字,但我意识到会有许多不同的组合,而且仅仅产生一个集合就需要相当多的行。我想知道是否有更简单的方法来做到这一点。