none
Refactorizando java a c# proyecto de consola RRS feed

  • Pregunta

  • Hola comunidad!

    Estoy migrando o refactorizando un codigo que fue escrito en java a c# y me he conseguido algunos problemas:

    // crea el arreglo de digitos
                digitos = numeroImp.ToCharArray();
    
    //NO COMPRENDO QUE HACE ESTE FOR EN JAVA PARA PODER APLICARLO EN C#
    for (char digito : digitos) {
                    
                    //Valida que el caracter sea un digito
                    if( ! Char.IsDigit(digito))
                    {
                        throw new ArgumentOutOfRangeException("Caracter " + digito
                            + " no es un digito");
                    }
    
                    
                }

    el Iterator me da error, pero no se que usar en c#

    private void adicionarDigito(int numero) {
    
            // Establece los segmentos de cada numero
            List<Integer> segList = new ArrayList<>();
    
            switch (numero) {
                case 1:
                    segList.add(3);
                    segList.add(4);
                    break;
                case 2:
                    segList.add(5);
                    segList.add(3);
                    segList.add(6);
                    segList.add(2);
                    segList.add(7);
                    break;
                case 3:
                    segList.add(5);
                    segList.add(3);
                    segList.add(6);
                    segList.add(4);
                    segList.add(7);
                    break;
                case 4:
                    segList.add(1);
                    segList.add(6);
                    segList.add(3);
                    segList.add(4);
                    break;
                case 5:
                    segList.add(5);
                    segList.add(1);
                    segList.add(6);
                    segList.add(4);
                    segList.add(7);
                    break;
                case 6:
                    segList.add(5);
                    segList.add(1);
                    segList.add(6);
                    segList.add(2);
                    segList.add(7);
                    segList.add(4);
                    break;
                case 7:
                    segList.add(5);
                    segList.add(3);
                    segList.add(4);
                    break;
                case 8:
                    segList.add(1);
                    segList.add(2);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(6);
                    segList.add(7);
                    break;
                case 9:
                    segList.add(1);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(6);
                    segList.add(7);
                    break;
                case 0:
                    segList.add(1);
                    segList.add(2);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(7);
                    break;
                default:
                    break;
            }
    
            Iterator<Integer> iterator = segList.iterator();
    
            while (iterator.hasNext()) {
                adicionarSegmento(iterator.next());
            }
        }

    Gracias


    José

    jueves, 5 de abril de 2018 4:44

Respuestas

Todas las respuestas

  • Buenas Jose

    No se mucho Java, asi que igual lo que digo no tiene sentido, pero creo que puedes cambiar y hacerlo asi:

    private void adicionarDigito(int numero) 
        {
            // Establece los segmentos de cada numero
            List<int> segList = new List<int>();
    
            switch (numero) {
                case 1:
                    segList.add(3);
                    segList.add(4);
                    break;
                case 2:
                    segList.add(5);
                    segList.add(3);
                    segList.add(6);
                    segList.add(2);
                    segList.add(7);
                    break;
                case 3:
                    segList.add(5);
                    segList.add(3);
                    segList.add(6);
                    segList.add(4);
                    segList.add(7);
                    break;
                case 4:
                    segList.add(1);
                    segList.add(6);
                    segList.add(3);
                    segList.add(4);
                    break;
                case 5:
                    segList.add(5);
                    segList.add(1);
                    segList.add(6);
                    segList.add(4);
                    segList.add(7);
                    break;
                case 6:
                    segList.add(5);
                    segList.add(1);
                    segList.add(6);
                    segList.add(2);
                    segList.add(7);
                    segList.add(4);
                    break;
                case 7:
                    segList.add(5);
                    segList.add(3);
                    segList.add(4);
                    break;
                case 8:
                    segList.add(1);
                    segList.add(2);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(6);
                    segList.add(7);
                    break;
                case 9:
                    segList.add(1);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(6);
                    segList.add(7);
                    break;
                case 0:
                    segList.add(1);
                    segList.add(2);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(7);
                    break;
                default:
                    break;
            }
    
            foreach(int iterator in segList)
            {        
                adicionarSegmento(iterator);
            }
        }

    Comentanos si tienes dudas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 5 de abril de 2018 6:43
  • hola

    Entiendo que esto

    for (char digito : digitos) {

    es un foreach

    foreach (char digito in digitos) {

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de abril de 2018 14:08
  • podrias cambiar el Iterator<Integer> por el List<int>

    la lista tiene el Add() y puedes usarlo en un foreach

    el next lo tiene el IEnumerator

     Enumerators in C#

    con este podrias usar el while

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de abril de 2018 14:12
  • private void adicionarDigito(int numero) {
    
            // Establece los segmentos de cada numero
            List<int> segList = new List<int>();
    
            switch (numero) {
                case 1:
                    segList.add(3);
                    segList.add(4);
                    break;
                case 0:
                    segList.add(1);
                    segList.add(2);
                    segList.add(3);
                    segList.add(4);
                    segList.add(5);
                    segList.add(7);
                    break;
                default:
                    break;
            }
    //MI OTRA DUDA ESTA EN ESTE ULTIMO BLOQUE
    
            Iterator<Integer> iterator = segList.iterator();
    
            while (iterator.hasNext()) {
                adicionarSegmento(iterator.next());
            }
        }
    
    


    José

    sábado, 7 de abril de 2018 3:01
  • Buenas, 

    Te lo ponía arriba:

    foreach(int iterator in segList)
    {        
        adicionarSegmento(iterator);
    }

    No se que hace exactamente el Iterator de Java, pero entiendo que es lo mismo

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    sábado, 7 de abril de 2018 12:13
  • He avanzado bastante en el código gracias a ustedes, pero aun me falta mucho.

    Aun tengo este error en la clase 

    private String[][] matrizImpr;
    private void imprimirNumero(int size, string numeroImp, int espacio)
            {
                int pivotX = 0;
                char[] digitos;
    
                size = size;
    
                // Calcula el numero de filas cada digito
                filasDig = (2 * size) + 3;
    
                // Calcula el numero de columna de cada digito
                columDig = size + 2;
    
                // Calcula el total de filas de la matriz en la que se almacenaran los digitos
                totalFilas = filasDig;
    
                // Calcula el total de columnas de la matriz en la que se almacenaran los digitos
                totalColum = (columDig * numeroImp.Length)
                        + (espacio * numeroImp.Length);
    
                // crea matriz para almacenar los numero a imprimir
    //AQUI TENGO UN ERROR 
    //DICE ESPECIFICADOR DE RANGO NO VALIDO [totalColum]
                matrizImpr = new string[totalFilas][totalColum];
    
                // crea el arreglo de digitos
                digitos = numeroImp.ToCharArray();
    
                // Inicializa matriz
                for (int i = 0; i < totalFilas; i++)
                {
                    for (int j = 0; j < totalColum; j++)
                    {
                        matrizImpr[i][j] = " ";
                    }
                }
    
                foreach (char digito in digitos)
                {
                    //Valida que el caracter sea un digito
                    if (!char.IsDigit(digito))
                    {
                        throw new ArgumentOutOfRangeException("Caracter " + digito
                            + " no es un digito");
                    }
                    int numero = int.Parse(digito.ToString());
                    //int numero = Integer.parseInt(String.valueOf(digito));
    
                    pf1[0] = 0;
                    pf1[1] = 0 + pivotX;
    
                    pf2[0] = (filasDig / 2);
                    pf2[1] = 0 + pivotX;
    
                    pf3[0] = (filasDig - 1);
                    pf3[1] = 0 + pivotX;
    
                    pf4[0] = (columDig - 1);
                    pf4[1] = (filasDig / 2) + pivotX;
    
                    pf5[0] = 0;
                    pf5[1] = (columDig - 1) + pivotX;
    
                    pivotX = pivotX + columDig + espacio;
    
                    adicionarDigito(numero);
                }
    
                // Imprime matriz
                for (int i = 0; i < totalFilas; i++)
                {
                    for (int j = 0; j < totalColum; j++)
                    {
                        Console.WriteLine(matrizImpr[i][j]);
                    }
                    Console.ReadLine();
                }
            }


    José


    • Editado Jose1714 martes, 10 de abril de 2018 3:33 error
    martes, 10 de abril de 2018 3:33
  • Buenas,

    Entiendo que lo que quieres es hacer una matriz bidimensional, para eso, la inicializacion es "new XXX[valor,valor]"

    Por ejemplo en tu código:

    string[,] matrizImpr;
    matrizImpr = new string[totalFilas,totalColum];
    matrizImpr[i,j] = " ";
    Console.WriteLine(matrizImpr[i,j]);
    

    Echale un ojo y nos comentas si es lo que necesitabas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    martes, 10 de abril de 2018 7:15