将Word改为Numbers Java

时间:2015-01-25 01:14:46

标签: java

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

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

七八十八加九十五

如何将其转换为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);
    }
}

1 个答案:

答案 0 :(得分:0)

首先,您分割输入的方式存在问题(您已对操作进行了硬编码)。我建议用“”(空格)分割输入,然后分别分析输入的每个部分。

输入中会有不同类型的单词,一个是单个数字,两位数字,操作和“百”。

然后你应该找到你输入的哪个类别的第一个词属于哪个,如果它有“ - ”它将是两位数,否则查看其他类别并搜索它直到你找到它。然后根据类别决定你应该用它做什么,如果它是一个数字,用它的等价替换它。如果它的两位数,拆分然后替换每个数字,如果它的操作存储它并从那里切断你的输入数组,以便你将第一个值和第二个值分开,如果它的百分之一乘以前一个数字100。

在此解析步骤之后,您将拥有类似{{700“,”88“},{”95“}和加号操作的内容。现在很容易使用parse方法将每个字符串转换为整数值,然后应用操作。

顺便说一句,将Enum用于常量并使用它们的序数值会更容易。同时使用Jared为您的双位数值做出的评论。

如果您还有疑问,请与我联系。