Autor Tema: Java arrays multidimensionales o con varias dimensiones (arreglos) CU00905C  (Leído 2610 veces)

PatAs

  • Sin experiencia
  • *
  • Mensajes: 19
  • ¿Libre...? - Solo cuando pienso y aprendo!!
    • Ver Perfil
Presento posible solución al ejercicio CU00905C del curso avanzado de Java.

Tuve problemas con el código para mostrar los resultados según lo solicitado por lo que tuve que recurrir a tomar literal, código creado por otro usuario del foro que se adaptaba a la respuesta buscada.

Enunciado:

"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"

Código: [Seleccionar]
package CU00905C;
import CU00903C.EntradaPorTeclado;

/**
 * Write a description of class PaisesYCiudades here.
 *
 * @author (Arnaldo R. Martinez)
 * @version (14-Ago-2017) - Ejercicio propuesto por aprenderaprogramar.com
 */
public class PaisesYCiudades {
    public static void main (String arg[]) {
        String[][] pais_ciudad = new String[4][4];
        for (int i=0,j=0;i<pais_ciudad.length;i++) {
            System.out.println("Por favor ingrese el país " +(i+1)+ " : ");
            EntradaPorTeclado pais = new EntradaPorTeclado();
            pais_ciudad[i][j] = pais.getEntrada();
        }
        for (int i=0;i<pais_ciudad.length;i++) {
            for (int j=1;j<pais_ciudad[i].length;j++) {
                System.out.println("Por favor ingrese la ciudad " +(j)+ " del pais " +(i+1)+ " :");
                EntradaPorTeclado ciudad = new EntradaPorTeclado();
                pais_ciudad[i][j] = ciudad.getEntrada();
            }
        }
//Código para mostrar el resultado. No lo pude resolver por propia iniciativa y está tomado
//literal de un usuario del foro de aprenderaprogramar.com con algunos retoques cosméticos de mi preferencia.
for (int i=0,j=0;i< pais_ciudad.length;i++) {
System.out.print("Pais:\t" +pais_ciudad[i][j]+ " .-Ciudadades: ");
for (j=1;j< pais_ciudad[i].length;j++) {
if(j == (pais_ciudad[i].length-1)) {
System.out.print(" y " + pais_ciudad[i][j] + ".");
} else if(j == (pais_ciudad[i].length-2)){
System.out.print( pais_ciudad[i][j]);
} else {
System.out.print( pais_ciudad[i][j] + ", ");
}
}
j = 0;
System.out.println();
}
}

}
Se adjunta código del auxiliar 'EntradaPorTeclado'
Código: [Seleccionar]
package CU00903C;

import java.util.Scanner;
/**
 * Para obtener entradas por teclado
 *
 * @author (Arnaldo Martinez)
 * @version (01_2016)
 */
public class EntradaPorTeclado{
   
    private String entradaTcl; //Campo de la clase
    //Constructor
    public EntradaPorTeclado(){
        entradaTcl= "";
        pedirEntrada(); //Llamado a un mètodo interno
    }
    //Mètodos de la clase
    public void pedirEntrada(){
        Scanner eEsc= new Scanner(System.in);
        entradaTcl= eEsc.nextLine();
    }
   
    public String getEntrada(){
        return entradaTcl;
    }
}
« Última modificación: 19 de Septiembre 2017, 19:39 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2661
    • Ver Perfil
Re:Java arrays multidimensionales o con varias dimensiones (arreglos) CU00905C
« Respuesta #1 en: 20 de Septiembre 2017, 19:26 »
Buenas, 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

PatAs

  • Sin experiencia
  • *
  • Mensajes: 19
  • ¿Libre...? - Solo cuando pienso y aprendo!!
    • Ver Perfil
Re:Java arrays multidimensionales o con varias dimensiones (arreglos) CU00905C
« Respuesta #2 en: 20 de Septiembre 2017, 22:55 »
Hola Ogramar.
Totalmente de acuerdo con lo expresado. El desarrollo no cumple con la condición del enunciado (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.), deberé practicar mejor la lectura e interpretación antes de generar los códigos.
Muchas gracias y saludos.

 

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".