none
imprimir una tabla organizada por consola c# RRS feed

  • Pregunta

  • buenas noches. la duda que tengo es, si se puede imprimir los datos guardados en varios arreglos recorridos por un ciclo for, pero que queden organizados como si estuvieran en una tabla.

    el codigo que tengo en el metodo que imprime eso es basico: 

    public void Imprimir()
            {
                Console.WriteLine("IDENTIFICACION\tNOMBRE\tTIPO DE LLAMADA\tDURACION\tDESCUENTO\tCOSTO TOTAL");
                for (int i = 0; i < tamaño + 1; i++) 
                {
                    Console.WriteLine(identificacion[i] + " " + NombreCliente[i] + " " + TipoLlamada[i] + " " + Duracion[i] + " " + Descuento[i] + " " + CostoTotal[i]);
                }
            }

    lo que deseo es que se impriman una debajo de la otra de manera ordenada. no se si eso sea posible. de antemano agradezco la ayuda, no se si fui claro con la duda

    sábado, 23 de noviembre de 2019 6:26

Todas las respuestas

  • Si los datos tienen longitudes parecidas, una forma sencilla de alinearlos es usar caracteres de tabulación. Y ya sabes cómo se usan porque los tienes metidos en tu primer WriteLine. Simplemente cambia en la línea que escribe la tabla los espacios en blanco " " por tabuladores "\t".

    Sin embargo, los tabuladores tienen una longitud fija de 8 caracteres. Si tus datos varían en tamaño de forma que no encajan dentro del mismo múltiplo de 8, entonces no quedarán bien alineadas las columnas en consola. Si te ocurre esto, la solución es un poco más complicada. Tendrás que rellenar con espacios en blanco hasta alcanzar la longitud deseada. Por ejemplo, si para la columna NombreCliente quieres dejar 20 caracteres de anchura, y un cliente tiene un nombre de 17 caracteres, entonces tendrás que concatenarle 3 espacios en blanco. Puedes escribir una pequeña subrutina que examine la propiedad .Length a ver cuánto mide, y que agregue tantos espacios como necesites, y llamas a esa subrutina desde la línea que usas para escribir la tabla.

    sábado, 23 de noviembre de 2019 7:55