Java - recorrer array desigual por columnas

 
Vista:

recorrer array desigual por columnas

Publicado por Alejandro (2 intervenciones) el 14/02/2013 16:05:08
buenas tardes. tengo este problema. este programa recorre primero por columnas y dentro de cada columna mira las filas, en las que se encuentra el numero de alumnos de una asignatura de un grupo determinado. la idea del programa es que sume los alumnos de cada columna y los muestre. lo he conseguido con arrays bidimensionales que tiene el mismo numero de columas en cada fila, pero no se que hacer para que me funcione en el caso de que una fila tenga una columna de menos.

espero que puedan ayudarme. gracias

public static void main (String[]args)
{
int numMatriculados[][]={{30,27,25,21,19,20},{21,17,24,26,30,21,25}}, nAlum=0;

for (int col = 0; col<7; col++)
{

for (int fil = 0; fil<numMatriculados.length; fil++)
{

nAlum+=numMatriculados[fil][col];
}

System.out.println("en el modulo "+(col+1)+" hay "+nAlum);
nAlum=0;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

recorrer array desigual por columnas

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 14/02/2013 19:48:33
Puedes manejar la excepcion de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main (String[]args)
	{
		int numMatriculados[][]={{30,27,25,21,19,20},{21,17,24,26,30,21,25}}, nAlum=0;
 
		for (int col = 0; col<7; col++)
		{
			for (int fil = 0; fil<numMatriculados.length; fil++)
			{
				try {
					nAlum+=numMatriculados[fil][col];
				} catch (ArrayIndexOutOfBoundsException e) {
					nAlum+=0;
				}
			}
			System.out.println("en el modulo "+(col+1)+" hay "+nAlum);
			nAlum=0;
		}
	}


Espero te sirva, Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recorrer array desigual por columnas

Publicado por Alejandro (2 intervenciones) el 14/02/2013 21:49:55
perfecto muchas gracias! al final he usado el try y el catch para controlar el error y he puesto un for antes de los dos for anidados para ver que fila es la que tiene el mayor nuemro de columnas, lo he guardado en una variable y lo he usado de condicion de salida del for. pongo el codigo por si a alguien le vale. muchas gracias de nuevo

public class Principal
{
public static void main (String[]args)
{
int numMatriculados[][]={{30,27,25,21,19,20},{21,17,24,26,30,21,85}}, nAlum=0, mascolum=0;

for (int i=0; i<numMatriculados.length; i++)
{
if (numMatriculados[i].length > mascolum)
mascolum = numMatriculados[i].length;
}


for (int col = 0; col<mascolum; col++)
{

for (int fil = 0; fil<numMatriculados.length; fil++)
{
try
{
nAlum+=numMatriculados[fil][col];
}
catch (ArrayIndexOutOfBoundsException e)
{

}
}

System.out.println("en el modulo "+(col+1)+" hay "+nAlum);
nAlum=0;
}
}

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recorrer array desigual por columnas

Publicado por Tom (1831 intervenciones) el 14/02/2013 20:26:39
Prueba este código:

1
2
3
4
int numMatriculados[][]={{30,27,25,21,19,20},{21,17,24,26,30,21,25}};
		for(int i = 0; i < numMatriculados.length; i++) {
			System.out.format("Fila: %d, cols %d\n", i, numMatriculados[i].length);
		}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar