public class ConvNumTexto {

   private static String []unid = {"cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"};
   private static String []edec = {"diez", "once", "doce", "trece", "catorce", "quince"};
   private static String []dece = {"diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"};
   private static String []cent = {"ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos"};



   public String ConvBas(int n) {
      int xn = n;
      String xcad = "";
      if (xn > 100 && xn < 1000) {
         xcad += cent[(xn / 100) - 1];
         xcad += " ";
         xn = xn - (100 * (xn / 100));
      }
      if (xn == 100) xcad += "cien";
      if (xn > 15 && xn < 100) {
         xcad += dece[(xn / 10) - 1];
         if ((xn % 10) != 0) xcad += " y ";
         xn = xn - (10 * (xn / 10));
      }
      if (xn >= 10 && xn < 16) xcad += edec[xn - 10];
      if (xn < 10) {
         if (xn == 0 && n != 0) return xcad;
         xcad += unid[xn];
      }
      return xcad;
   }


   public String Conv(int n) {
      int r = 0, xn = n;
      String xcad = "";
      if (xn == 1e+6) {
         xcad += "un millon";
         return xcad;
      }
      if (xn >= 2e+3 && xn < 1e+6) {
         r = xn / 1000;
         xcad  += ConvBas(r);
         xcad += " mil ";
         xn = xn - 1000 * r;
      }
      if (xn > 1e+3 && xn < 2e+3) {
         if (xn / 1000 == 1) xcad += "un";
         else xcad += unid[xn / 1000];
         xcad += " mil ";
         xn = xn - (1000 * (xn / 1000));
      }
      if (xn == 1000) {
         xcad += "un mil ";
         return xcad;
      }
      if (xn >= 0 && xn < 1000) xcad += ConvBas(xn);
      return xcad;
   }

   // Funcion Principal ....
   public static void main(String[] args) {
      ConvNumTexto c = new ConvNumTexto();

      int i;
      for (i = 0; i < 1000001; i++) {
         System.out.println(i + " ==>" + c.Conv(i));
      }
   }
}