Principales respuestas
Refactorizando java a c# proyecto de consola

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é
Respuestas
-
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
con este podrias usar el while
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Tonatiuh AbregoModerator jueves, 5 de abril de 2018 15:17
- Marcado como respuesta Tonatiuh AbregoModerator martes, 10 de abril de 2018 18:13
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:
-
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 -
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
con este podrias usar el while
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Tonatiuh AbregoModerator jueves, 5 de abril de 2018 15:17
- Marcado como respuesta Tonatiuh AbregoModerator martes, 10 de abril de 2018 18:13
-
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é
-
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:
-
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
-
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: