Autor Tema: Arrays (arreglos) multidimensionales en Java concepto Declaración y uso CU00905C  (Leído 2347 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
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)

Código: [Seleccionar]
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

Código: [Seleccionar]
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
« Última modificación: 31 de Enero 2018, 19:07 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".