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: LuisM en 24 de Octubre 2017, 14:58
-
Hola a todos !!! Dejo el código Java para el ejercicio propuesto CU00905C del tutorial avanzado de programación Java. Desde ya, muchas gracias por la atención. Un saludo,
Luis
EJERCICIO
Crea un programa que pida por pantalla cuatro países y a continuación tres ciudades de cada uno de estos países. Los nombres de ciudades deben almacenarse en un array multidimensional cuyo primer índice sea el número asignado a cada país y el segundo índice el número asignado a cada ciudad.
Ejemplo de resultados que debe mostrar el programa:
País: Argentina Ciudades: Buenos Aires Cordoba La Plata
País: España Ciudades: Madrid Lugo Sevilla
País: Francia Ciudades: Paris Niza Lyon
País: Italia Ciudades: Roma Napoles Sicilia
Clase MatrizCiudades - (metodo main)
public class MatrizCiudades
{
public static void main(String arg[]){
int i=0;
int j=0;
int k=0;
EntradaDeTeclado entrada = new EntradaDeTeclado();
String[] pais = new String[4];
String[] ciudad = new String[12];
int[][] ciudadxpais = new int[4][3];
for (i=0;i<4;i++){
System.out.println("Por favor, ingrese el nombre de un pais:");
entrada.pedirEntrada();
pais[i] = entrada.getEntrada();
for (j=0;j<3;j++) {
System.out.println("Por favor ingrese la ciudad ["+(j+1)+"] de "+pais[i]);
entrada.pedirEntrada();
ciudad[k] = entrada.getEntrada();
ciudadxpais[i][j] = k;
k++;
}
}
for (i=0;i<4;i++){
System.out.print("Pais :"+pais[i]+" Ciudades: ");
for (j=0;j<3;j++) {
k=ciudadxpais[i][j];
System.out.print(" "+ciudad[k]);
}
System.out.println("");
}
}
}
Clase EntradaDeTeclado
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
private String entradaTeclado; //Variable de instancia (campo) de la clase
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
// pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
} //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
} //Cierre del método pedirEntrada
public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
public String getPrimeraPalabra () {
for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
public int getLongitud () { //Método de la clase
return entradaTeclado.length();
} //Cierre del método getLongitud
} //Cierre de la clase
-
Buenas LuisM, tu código funciona pero has hecho algo un tanto extraño. Has creado un array unidimensional de 4 países, otro array unidimensional de 12 ciudades (4x3=12, 3 ciudades para cada país), y un array multidimensional de 4x3
Luego vas pidiendo países y ciudades, y en la matriz vas almacenando
paisciudad[0][0] = 0;
paisciudad[0][1] = 1;
paisciudad[0][2] = 2;
paisciudad[1][0] = 3;
paisciudad[1][1] = 4;
paisciudad[1][2] = 5;
Es decir, vas asignando a cada elemento del array el índice de una ciudad, pero eso no parece tener mucha lógica. Si ya dispones de esos índices, ¿entonces para qué usar la matriz multidimensional?
La idea de este ejercicio es no usar arrays unidimensionales, sino únicamente una matriz multidimensional.
Para repasar los conceptos de array unidimensional y multidimensional y cómo pueden usarse e interpretarse sería conveniente hacerlo con el curso Bases de la programación nivel I: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59
Puedes ver otras propuestas de solución para este ejercicio en los foros, también te pueden guiar para ver cómo podría ser una solución más coherente.
Salu2