How to convert number to words in java

前端 未结 27 2765
遇见更好的自我
遇见更好的自我 2020-11-21 23:53

We currently have a crude mechanism to convert numbers to words (e.g. using a few static arrays) and based on the size of the number translating that into an english text. B

27条回答
  •  无人共我
    2020-11-22 00:49

    /* this program will display number in words
    for eg. if you enter 101,it will show "ONE HUNDRED AND ONE"*/
    
    import java.util.*;
    
    public class NumToWords {
      String string;
      String st1[] = { "", "one", "two", "three", "four", "five", "six", "seven",
                       "eight", "nine", };
      String st2[] = { "hundred", "thousand", "lakh", "crore" };
      String st3[] = { "ten", "eleven", "twelve", "thirteen", "fourteen",
                       "fifteen", "sixteen", "seventeen", "eighteen", "ninteen", };
      String st4[] = { "twenty", "thirty", "fourty", "fifty", "sixty", "seventy",
                       "eighty", "ninety" };
    
      public String convert(int number) {
        int n = 1;
        int word;
        string = "";
        while (number != 0) {
          switch (n) {
            case 1:
              word = number % 100;
              pass(word);
              if (number > 100 && number % 100 != 0) {
                show("and ");
                //System.out.print("ankit");
              }
              number /= 100;
              break;
            case 2:
              word = number % 10;
              if (word != 0) {
                show(" ");
                show(st2[0]);
                show(" ");
                pass(word);
              }
              number /= 10;
              break;
            case 3:
              word = number % 100;
              if (word != 0) {
                show(" ");
                show(st2[1]);
                show(" ");
                pass(word);
              }
              number /= 100;
              break;
            case 4:
              word = number % 100;
              if (word != 0) {
                show(" ");
                show(st2[2]);
                show(" ");
                pass(word);
              }
              number /= 100;
              break;
            case 5:
              word = number % 100;
              if (word != 0) {
                show(" ");
                show(st2[3]);
                show(" ");
                pass(word);
              }
              number /= 100;
              break;
            }
            n++;
          }
          return string;
        }
    
      public void pass(int number) {
        int word, q;
        if (number < 10) {
          show(st1[number]);
        }
        if (number > 9 && number < 20) {
          show(st3[number - 10]);
        }
        if (number > 19) {
          word = number % 10;
          if (word == 0) {
            q = number / 10;
            show(st4[q - 2]);
          } else {
            q = number / 10;
            show(st1[word]);
            show(" ");
            show(st4[q - 2]);
          }
        }
      }
    
      public void show(String s) {
        String st;
        st = string;
        string = s;
        string += st;
      }
    
      public static void main(String[] args) {
        NumToWords w = new NumToWords();
        Scanner input = new Scanner(System.in);
        System.out.print("Enter Number: ");
        int num = input.nextInt();
        String inwords = w.convert(num);
        System.out.println(inwords);
      }
    }
    

提交回复
热议问题