Array Bidimensional, obtener posición
Publicado por Jimmy (1 intervención) el 11/03/2014 10:13:59
¿Alguien sabe cómo obtener el ÍNDICE de una POSICIÓN en un array bidimensional? Sé que hay que crear una variable auxiliar para guardar la posición en el if donde impongo la condición pero me sale error.
Tengo el caso siguiente:
Tenemos un array de chars (el nombre de cada habitación, la letra vamos)
a b c d e f g h i j k l m n o p q r s t
Y un array bidimensional, del que calculo el nombre de plazas libres:
5 3 0 1 0 0 3 5 1 3 2 2 1 1 0 0 0 4 1 4
El siguiente indica la planta del edificio pero es fácil de encontrar.
4 5 1 3 4 3 5 3 0 2 2 4 0 4 5 0 4 5 2 4
Indiqueu el nombre de places:
5
Les habitacions que tenen aquest nombre de places són 2
Lo calcula bien... pero QUIERO SABER LA POSICIÓN, por lo tanto, en el array de plazas libres que forma parte del array bidimensional hay que encontrar la posición (para luego comparar con la posición del array de chars)....
¿alguien me ayuda?
public class Exercicis09 {
public int[][] generarNombres() {
int vector[][] = new int[20][2];
Random random = new Random();
//El problema és que a les dues columnes genera el mateix random!
for (int i = 0; i < vector.length; i++) {
for (int j = 0; j < vector[i].length; j++) {
vector[i][j] = random.nextInt(6);
}
}
return vector;
}
//Mostra el nom de les habitacions passant-la com a paràmetre
public void mostrarMatriu(int[][] dades, char[] noms) {
for (int i = 0; i < noms.length; i++) {
System.out.print(noms[i] + "\t");
}
System.out.println("\n");
//Imprimir. Columna g (places). Posició 0 és la primera columna.
for (int j = 0; j < dades.length; j++) {
System.out.print(dades[j][0] + "\t");
}
System.out.println("\n");
//Columna g (planta). Posició 1 és la segona columna.
for (int g = 0; g < dades.length; g++) {
System.out.print(dades[g][1] + "\t");
}
}
//Escriviu un mètode que ens digui quantes habitacions tenim d'un determinat
//nombre de places i quines són.
public void segonsPlaces(int dades[][], int places) {
int comptador = 0;
int[] posicions = new int[comptador];
for (int i = 0; i < dades.length; i++) {
if (dades[i][0] == places) {
comptador++;
Aquí debería crear una variable auxiliar para ir almacenando la posición PERO ME DA ERROR de que no puedo almacenar la posición de un array BIDimensional a un array UNIdimensional...
}
}
System.out.println("Les habitacions que tenen aquest"
+ "nombre de places són " + comptador);
}
public static void main(String[] args) {
Exercicis09 p = new Exercicis09();
UtilitatsConsola utilitats = new UtilitatsConsola();
char[] noms = "abcdefghijklmnopqrst".toCharArray();
int[][] dades = p.generarNombres();
p.mostrarMatriu(dades, noms);
int places = lector.nextInt();
p.segonsPlaces(dades, places);
System.out.println("\n");
}
}
Tengo el caso siguiente:
Tenemos un array de chars (el nombre de cada habitación, la letra vamos)
a b c d e f g h i j k l m n o p q r s t
Y un array bidimensional, del que calculo el nombre de plazas libres:
5 3 0 1 0 0 3 5 1 3 2 2 1 1 0 0 0 4 1 4
El siguiente indica la planta del edificio pero es fácil de encontrar.
4 5 1 3 4 3 5 3 0 2 2 4 0 4 5 0 4 5 2 4
Indiqueu el nombre de places:
5
Les habitacions que tenen aquest nombre de places són 2
Lo calcula bien... pero QUIERO SABER LA POSICIÓN, por lo tanto, en el array de plazas libres que forma parte del array bidimensional hay que encontrar la posición (para luego comparar con la posición del array de chars)....
¿alguien me ayuda?
public class Exercicis09 {
public int[][] generarNombres() {
int vector[][] = new int[20][2];
Random random = new Random();
//El problema és que a les dues columnes genera el mateix random!
for (int i = 0; i < vector.length; i++) {
for (int j = 0; j < vector[i].length; j++) {
vector[i][j] = random.nextInt(6);
}
}
return vector;
}
//Mostra el nom de les habitacions passant-la com a paràmetre
public void mostrarMatriu(int[][] dades, char[] noms) {
for (int i = 0; i < noms.length; i++) {
System.out.print(noms[i] + "\t");
}
System.out.println("\n");
//Imprimir. Columna g (places). Posició 0 és la primera columna.
for (int j = 0; j < dades.length; j++) {
System.out.print(dades[j][0] + "\t");
}
System.out.println("\n");
//Columna g (planta). Posició 1 és la segona columna.
for (int g = 0; g < dades.length; g++) {
System.out.print(dades[g][1] + "\t");
}
}
//Escriviu un mètode que ens digui quantes habitacions tenim d'un determinat
//nombre de places i quines són.
public void segonsPlaces(int dades[][], int places) {
int comptador = 0;
int[] posicions = new int[comptador];
for (int i = 0; i < dades.length; i++) {
if (dades[i][0] == places) {
comptador++;
Aquí debería crear una variable auxiliar para ir almacenando la posición PERO ME DA ERROR de que no puedo almacenar la posición de un array BIDimensional a un array UNIdimensional...
}
}
System.out.println("Les habitacions que tenen aquest"
+ "nombre de places són " + comptador);
}
public static void main(String[] args) {
Exercicis09 p = new Exercicis09();
UtilitatsConsola utilitats = new UtilitatsConsola();
char[] noms = "abcdefghijklmnopqrst".toCharArray();
int[][] dades = p.generarNombres();
p.mostrarMatriu(dades, noms);
int places = lector.nextInt();
p.segonsPlaces(dades, places);
System.out.println("\n");
}
}
Valora esta pregunta


0