Converting String number words to just String number:Java

Tags: , , ,



I’m a beginner coder trying to work on converter for words which should work that way:Input= “zero;six;eight;two” Output = “0682”. But in my case the output I get is “0282”. Are there any solutions to that? Or like maybe I should program differently?. I found that LinkedLists or HashMap could work, if so could you show how?

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;
    
            }

Answer

You should be splitting your semicolon-separated input on ;, and then iterating each term in a loop:

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);

For an input of zero;six;eight;two this was the output from the above script:

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


Source: stackoverflow