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: jga en 29 de Septiembre 2015, 11:58

Título: Matriz multidimensional Java
Publicado por: jga en 29 de Septiembre 2015, 11:58
Hola amigos , estoy practicando con las matrices multidimensionales , en este caso es tridimensional , pero tengo una incidencia , el codigo es este:
Código: [Seleccionar]
package cursoJava;

public class arrayPaises {

 public static void main(String[] args) {
  // TODO Auto-generated method stub

  String [][][] paises= new String [3][3][3];
 
  //3 Paises
  paises[0][0][0]="España";
  paises[1][0][0]="Italia";
  paises[2][0][0]="Francia";
 
 //Ciudades de los 3 paises
  paises[0][0][0]="Madrid";
  paises[0][1][0]="Malaga";
  paises[0][2][0]="Bilbao";
  paises[1][0][0]="Roma";
  paises[1][1][0]="Milan";
  paises[1][2][0]="Modena";
  paises[2][0][0]="Paris";
  paises[2][1][0]="Marseille";
  paises[2][2][0]="Poitier";
 
  //Calles de las 3 ciudades
  paises[0][0][0]="Calle de Madrid 1";
  paises[0][0][1]="Calle de Madrid 2";
  paises[0][0][2]="Calle de Madrid 3";
  paises[0][1][0]="Calle de Malaga 1";
  paises[0][1][1]="Calle de Malaga 2";
  paises[0][1][2]="Calle de Malaga 3";
  paises[0][2][0]="Calle de Bilbao 1";
  paises[0][2][1]="Calle de Bilbao 2";
  paises[0][2][2]="Calle de Bilbao 3";
 
  paises[1][0][0]="Via di Roma 1";
  paises[1][0][1]="Via di Roma 2";
  paises[1][0][2]="Via di Roma 3";
  paises[1][1][0]="Via di Milan 1";
  paises[1][1][1]="Via di Milan 2";
  paises[1][1][2]="Via di Milan 3";
  paises[1][2][0]="Via di Modena 1";
  paises[1][2][1]="Via di Modena 2";
  paises[1][2][2]="Via di Modena 3";
 
  paises[2][0][0]="Rue du Paris 1";
  paises[2][0][1]="Rue du Paris 2";
  paises[2][0][2]="Rue du Paris 3";
  paises[2][1][0]="Rue du Marseille 1";
  paises[2][1][1]="Rue du Marseille 2";
  paises[2][1][2]="Rue du Marseille 3";
  paises[2][2][0]="Rue du Poitier 1";
  paises[2][2][1]="Rue du Poitier 2";
  paises[2][2][2]="Rue du Poitier 3";
 
 
  for(int i=0;i<paises.length;i++){
   System.out.println(paises[i]);
   
   for(int j=0;j<paises[i].length;j++){
    System.out.println("    "+paises[i][j]);
   
    for(int k=0;k<paises[i][j].length;k++){
     System.out.println("        "+paises[i][j][k]);
     
    }
   }
  }
 }
}



pero al imprimir por consola aparece esto:
Código: [Seleccionar]
[[Ljava.lang.String;@659e0bfd   //pais 1
    [Ljava.lang.String;@2a139a55   //ciudad 1 de pais 1
        Calle de Madrid 1
        Calle de Madrid 2
        Calle de Madrid 3
    [Ljava.lang.String;@15db9742  //ciudad 2 de pais 1
        Calle de Malaga 1
        Calle de Malaga 2
        Calle de Malaga 3
    [Ljava.lang.String;@6d06d69c  //ciudad 3 de pais 1
        Calle de Bilbao 1
        Calle de Bilbao 2
        Calle de Bilbao 3
[[Ljava.lang.String;@7852e922   //pais 2
    [Ljava.lang.String;@4e25154f   //ciudad 1 de pais 2
        Via di Roma 1
        Via di Roma 2
        Via di Roma 3
    [Ljava.lang.String;@70dea4e   //ciudad 2 de pais 2
        Via di Milan 1
        Via di Milan 2
        Via di Milan 3
    [Ljava.lang.String;@5c647e05   //ciudad 3 de pais 2
        Via di Modena 1
        Via di Modena 2
        Via di Modena 3
[[Ljava.lang.String;@33909752   // pais 3
    [Ljava.lang.String;@55f96302   //ciudad 1 de pais 3
        Rue du Paris 1
        Rue du Paris 2
        Rue du Paris 3
    [Ljava.lang.String;@3d4eac69   //ciudad 2 de pais 3
        Rue du Marseille 1
        Rue du Marseille 2
        Rue du Marseille 3
    [Ljava.lang.String;@42a57993   //ciudad 3 de pais 3
        Rue du Poitier 1
        Rue du Poitier 2
        Rue du Poitier 3
No entiendo porque aparecen esas variables en vez del pais y la ciudad correspondiente.
Saludos.
Título: Re:Matriz multidimensional Java
Publicado por: César Krall en 01 de Octubre 2015, 09:48
Hola jga!

No estás manejando bien los índices y parece que tienes algunos errores o incongruencias, por ejemplo:

Primero tienes  paises[0][0][0]="España";
 
Luego tienes paises[0][0][0]="Madrid";

Y luego tienes paises[0][0][0]="Calle de Madrid 1";

Esto no tiene sentido, estás sobreescribiendo la misma variable con distintos contenidos.

Tratar de imprimir paises[ i ] por pantalla tampoco tiene lógica porque no tienes un array unidimensional, toda referencia debes tenerla con tres dimensiones porque estás trabajando con tres dimensiones

Recomendamos seguir este curso paso a paso donde se explican todos los conceptos, ahí está todo explicado: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos!