将字符串数字单词转换为仅字符串数字:Java

时间:2020-10-29 03:13:05

标签: java string linked-list hashmap

我是一位初学者编码器,试图在转换器上处理应该以这种方式工作的单词:输入=“零;六;八;二”输出=“ 0682”。但是在我的情况下,我得到的输出是“ 0282”。有什么解决办法吗?还是像我应该编程不同?我发现LinkedLists或HashMap可以工作,如果可以的话,您可以演示如何做?

Scanner scanner = new Scanner(System.in);
    String number = scanner.next();
            while (true) {
                String num = "";
                if(number.contains("zero"))
                    num = num + "0";
    
                if (number.contains("one"))
                    num = num + "1";
    
                if (number.contains("two"))
                    num = num +"2";
    
                if (number.contains("three"))
                    num = num + "3";
    
                if(number.contains("four"))
                    num = num + "4";
    
                if(number.contains("five"))
                    num = num + "5";
    
                if(number.contains("six"))
                    num = num + "6";
    
                if(number.contains("seven"))
                    num = num + "7";
    
                if(number.contains("eight"))
                    num = num + "8";
    
    
                System.out.println(number);
                System.out.println(num);
                break;
    
            }

2 个答案:

答案 0 :(得分:1)

您应该在;上用分号分隔输入,然后循环遍历每个术语:

Scanner scanner = new Scanner(System.in);
String input = scanner.next();
String[] nums = input.split(";");
String num = "";

for (String number : nums) {
    if ("zero".equals(number))
        num = num + "0";
    else if ("one".equals(number))
        num = num + "1";
    else if ("two".equals(number))
        num = num + "2";
    else if ("three".equals(number))
        num = num + "3";
    else if ("four".equals(number))
        num = num + "4";
    else if ("five".equals(number))
        num = num + "5";
    else if ("six".equals(number))
        num = num + "6";
    else if ("seven".equals(number))
        num = num + "7";
    else if ("eight".equals(number))
        num = num + "8";
    else if ("nine".equals(number))
        num = num + "9";
}

System.out.println("input:  " + input);
System.out.println("output: " + num);

对于zero;six;eight;two的输入,这是上述脚本的输出:

input:  zero;six;eight;two
output: 0682

答案 1 :(得分:1)

在这里我更喜欢使用Edge e1_2 = Edge(vertices[0], vertices[1]); 。首先,您 可以 将数字映射初始化为文本,将数字映射为HashMap;喜欢

int

然后,您的private static Map<String, Integer> digitDict = new HashMap<>(); static { digitDict.put("zero", 0); digitDict.put("one", 1); digitDict.put("two", 2); digitDict.put("three", 3); digitDict.put("four", 4); digitDict.put("five", 5); digitDict.put("six", 6); digitDict.put("seven", 7); digitDict.put("eight", 8); digitDict.put("nine", 9); } 方法只需要参考此main。但是,我也建议您循环阅读输入。将行转换为小写(以简化操作)。并提供终止循环的机制。像

Map
相关问题