Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: david82 en 15 de Agosto 2017, 23:08
-
Buenas tardes.
Esta es mi solución al ejercicio propuesto CU00905C del tutorial avanzado de programación Java:
package estandar;
import java.util.Scanner;
public class EntradaDeTeclado {
private String entrada;
private Scanner entradaTeclado;
public EntradaDeTeclado() {
entrada = "";
entradaTeclado=new Scanner(System.in);
}
public void setEntrada(){entrada = entradaTeclado.nextLine();}
public String getEntrada(){return entrada;}
}
import estandar.EntradaDeTeclado;
public class TestArrayPaisesYCiudades {
public static void main(String[] args) {
int i,j;
String paisesYCiudades[][]=new String[4][4];
EntradaDeTeclado entrada = new EntradaDeTeclado();
System.out.println("Introduzca cuatro paises:");
for(i=0;i<4;i++){
entrada.setEntrada();
paisesYCiudades[i][0]=entrada.getEntrada();
}
for(i=0;i<4;i++){
System.out.println("Introduzca tres ciudades para "+paisesYCiudades[i][0]);
for(j=1;j<4;j++){
entrada.setEntrada();
paisesYCiudades[i][j]=entrada.getEntrada();
}
}
System.out.println("El listado de ciudades por pais es:");
System.out.println();
for(i=0;i<4;i++){
for(j=0;j<4;j++)
System.out.println(paisesYCiudades[i][j]);
}
}
}
Una sugerencia adicional. En el curso dice:
Para obtener el número de filas de la matriz, podemos recurrir a la propiedad “length” de los arrays, de la siguiente manera:
int filas = matriz.length;
Para el caso del número de columnas sería de la siguiente forma :
int columnas = matriz[0].length;
Sin embargo, esto no es del todo cierto, debido a que, según leí, Java interpreta los arrays multidimensionales como instancias de vectores. Es decir que cada fila puede tener diferente número de elementos.
Por lo tanto debería decir:
int columnas = matriz[fila].length
Saludos!!! :)
-
Buenas, hago los mismos comentarios que para un ejercicio de otro compañero que acabo de revisar
El programa funciona correctamente pero creo que el planteamiento podría mejorarse.
Ahora mismo estás almacenando en el mismo array el nombre de los países y de las ciudades. Eso sería como tener en una misma caja peras y manzanas, cuando quizás es preferible que ambas cosas estén por separado.
Por ello una posible propuesta de solución alternativa se basaría en lo siguiente:
- Declarar un array pais[4] que almacene los cuatro países. De esta forma este array almacena solo ciudades.
- Declarar un array ciudad[4][3] donde almacene para cada país las tres ciudades correspondientes. De esta forma este array almacena sólo ciudades (para saber el país usaríamos el primer índice, y para saber la ciudad el segundo índice)
El ejercicio no pide que países y ciudades se almacenen en el mismo array, sólo pide que las ciudades se almacenen en un array multidimensional cuyo primer índice vaya asociado al número de país y el segundo índice vaya asociado al número de ciudad.
Salu2