Java - Ayuda con Matrices(arreglos) Java

 
Vista:

Ayuda con Matrices(arreglos) Java

Publicado por Aprendiz (5 intervenciones) el 22/08/2021 15:16:23
Buenos días! Tengo un problema que me pide hallar los puntos de silla de una matriz(estos los valores que son máximos de una columna y mínimos de una fila, o bien, máximos de una fila y mínimos de una columna) El problema es que las funciones me las ejecuta bien, pero al llegar al main a los for no se me ejecuta. Una vez introduzco la matriz se queda en blanco, aparentemente no se ejecuta esos bucles anidados y no sé por qué. Desde ya gracias!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import java.util.Scanner;
 
public class PuntosDeSillaMatriz {
 
	public static void main(String[] args) {
 
		int[][] m = LeerMatriz();
		int[] maximosfila = MaxFila(m);
		int[] maximoscolumna = MaxCol(m);
		int[] minimosfila = MinFila(m);
		int[] minimoscolumna = MinCol(m);
		for (int i = 0; i < maximosfila.length; i++) {
		}
 
		for (int i = 0; i < maximosfila.length; i++) {
			for (int j = 0; j < minimoscolumna.length; j++) {
				if (maximosfila[i] == minimoscolumna[j]) {
					System.out.println("algo va mal");
					System.out.println(minimoscolumna[j]);
				}
			}
 
		}
		for (int i = 0; i < maximoscolumna.length; i++) {
			for (int j = 0; j < minimosfila.length; j++) {
				if (minimoscolumna[j] == maximosfila[i]) {
					System.out.println(minimoscolumna[j]);
				}
			}
		}
 
	}
 
	public static int[][] LeerMatriz() {
		Scanner input = new Scanner(System.in);
		System.out.println("Introduzca dimensiones y valores de matriz");
		int m = input.nextInt();
		int n = input.nextInt();
		int[][] matrix = new int[m][n];
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				matrix[i][j] = input.nextInt();
			}
		}
		return matrix;
	}
 
	public static int[] MaxFila(int[][] m) {
		int[] maxf = new int[m.length];
		maxf[0] = m[0][0];
		for (int i = 0; i < m[0].length; i++) {
			for (int j = 0; j < m.length; j++) {
				if (m[i][j] > maxf[i]) {
					maxf[i] = m[i][j];
				}
			}
		}
		return maxf;
	}
 
	public static int[] MinFila(int[][] m) {
		int[] minf = new int[m.length];
		minf[0] = m[0][0];
		for (int i = 0; i < m[0].length; i++) {
			for (int j = 0; j < m.length; j++) {
				if (m[i][j] < minf[i]) {
					minf[i] = m[i][j];
				}
			}
		}
		return minf;
	}
 
	public static int[] MaxCol(int[][] m) {
		int[] maxc = new int[m.length];
		maxc[0] = m[0][0];
		for (int j = 0; j < m.length; j++) {
			for (int i = 0; i < m.length; i++) {
				if (m[i][j] > maxc[i]) {
					maxc[j] = m[i][j];
				}
			}
		}
		return maxc;
	}
 
	public static int[] MinCol(int[][] m) {
		int[] minc = new int[m.length];
		minc[0] = m[0][0];
		for (int j = 0; j < m.length; j++) {
			for (int i = 0; i < m.length; i++) {
				if (m[i][j] < minc[i]) {
					minc[j] = m[i][j];
				}
			}
		}
		return minc;
	}
 
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con Matrices(arreglos) Java

Publicado por Kabuto (1044 intervenciones) el 22/08/2021 19:46:28
Mmmhh, no entiendo muy bien lo que se busca en esos bucles.

De todos modos, lo primero es añadir código, aunque sea de forma temporal, para que nos muestre en pantalla los datos obtenidos.
Vamos a querer ver tanto la matriz introducida, como los arrays con máximos y mínimos, para asegurarnos de que los métodos funciona bien y estamos obteniendo datos que son lógicos.

Por ejemplo, si hacemos este cambio en el código (lo marco en negrita):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public class MaxMinMatriz {
 
	public static void main(String[] args) {
 
		int[][] m = LeerMatriz();
		int[] maximosfila = MaxFila(m);
		int[] maximoscolumna = MaxCol(m);
		int[] minimosfila = MinFila(m);
		int[] minimoscolumna = MinCol(m);
 
		//Mostramos información obtenida
		System.out.println("\nMatriz:");
		for (int[] fila: m)
			System.out.println(Arrays.toString(fila));
 
		System.out.println("\nMaximosFila:");
		System.out.println(Arrays.toString(maximosfila));
		System.out.println("\nMaximosColumna:");
		System.out.println(Arrays.toString(maximoscolumna));
		System.out.println("\nMinimosFila:");
		System.out.println(Arrays.toString(minimosfila));
		System.out.println("\nMinimosColumna:");
		System.out.println(Arrays.toString(minimoscolumna));
 
		for (int i = 0; i < maximosfila.length; i++) {
			for (int j = 0; j < minimoscolumna.length; j++) {
				if (maximosfila[i] == minimoscolumna[j]) {
					System.out.println("algo va mal");
					System.out.println(minimoscolumna[j]);
				}
			}
 
		}
		for (int i = 0; i < maximoscolumna.length; i++) {
			for (int j = 0; j < minimosfila.length; j++) {
				if (minimoscolumna[j] == maximosfila[i]) {
					System.out.println(minimoscolumna[j]);
				}
			}
		}
 
	}
 
	public static int[][] LeerMatriz() {
		Scanner input = new Scanner(System.in);
		System.out.println("Introduzca dimensiones y valores de matriz");
		int m = input.nextInt();
		int n = input.nextInt();
		int[][] matrix = new int[m][n];
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				matrix[i][j] = input.nextInt();
			}
		}
		return matrix;
	}
 
	public static int[] MaxFila(int[][] m) {
		int[] maxf = new int[m.length];
		maxf[0] = m[0][0];
		for (int i = 0; i < m[0].length; i++) {
			for (int j = 0; j < m.length; j++) {
				if (m[i][j] > maxf[i]) {
					maxf[i] = m[i][j];
				}
			}
		}
		return maxf;
	}
 
	public static int[] MinFila(int[][] m) {
		int[] minf = new int[m.length];
		minf[0] = m[0][0];
		for (int i = 0; i < m[0].length; i++) {
			for (int j = 0; j < m.length; j++) {
				if (m[i][j] < minf[i]) {
					minf[i] = m[i][j];
				}
			}
		}
		return minf;
	}
 
	public static int[] MaxCol(int[][] m) {
		int[] maxc = new int[m.length];
		maxc[0] = m[0][0];
		for (int j = 0; j < m.length; j++) {
			for (int i = 0; i < m.length; i++) {
				if (m[i][j] > maxc[i]) {
					maxc[j] = m[i][j];
				}
			}
		}
		return maxc;
	}
 
	public static int[] MinCol(int[][] m) {
		int[] minc = new int[m.length];
		minc[0] = m[0][0];
		for (int j = 0; j < m.length; j++) {
			for (int i = 0; i < m.length; i++) {
				if (m[i][j] < minc[i]) {
					minc[j] = m[i][j];
				}
			}
		}
		return minc;
	}
 
}

Al mostrar los datos en pantalla, vemos que los métodos para obtener los máximos funcionan bien. Pero el de obtener los mínimos, algo raro pasa, no nos dan datos correctos (marco en negrita).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Introduzca dimensiones y valores de matriz
3
3
1
2
3
4
5
6
7
8
9
 
Matriz:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
 
MaximosFila:
[3, 6, 9]
 
MaximosColumna:
[7, 8, 9]
 
MinimosFila:
[1, 0, 0]
 
MinimosColumna:
[1, 0, 0]

Entonces, debido a esto, supongo que los bucles siguientes, sí se ejecutan, pero no encuentran lo que se les pide, porque los métodos no están generando datos correctos.

Revisa el código de los métodos para los mínimos, a ver si puedes corregirlos
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