Java - ¿Cómo puedo eliminar una fila de una matriz?

 
Vista:
Imágen de perfil de Omi
Val: 11
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

¿Cómo puedo eliminar una fila de una matriz?

Publicado por Omi (6 intervenciones) el 25/05/2020 18:51:13
hola, estoy haciendo un ejercicio donde necesito eliminar una fila de una matriz/arreglo bidimensional a decisión del usuario pero no encuentro la forma de hacer que se elimine.

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
public static void main(String[] args) {
    //Inicialización de variables
    int[][] matriz = new int [4][4];
    String decision;
    int filaQuitar;
    Scanner input = new Scanner(System.in);
 
    //Inicialización de la matriz 4x4 con números aleatorios del 1 al 9
    for (int filas = 0; filas < 4; filas++) {
        System.out.println("");
        for (int columnas = 0; columnas < 4; columnas++) {
            matriz[filas][columnas] = (int) (Math.random() *9+1);
            System.out.print(matriz[filas][columnas] + "\t");
        }
    }
 
    System.out.println(\n¿Desea eliminar alguna fila?");
    decision= input.nextLine();
    switch(decision){
        case "si":
            System.out.println("¿Cuál fila desea eliminar?: ");
            filaQuitar= input.nextInt();
            for (int filas = 0; filas < 4; filas++) {
                for (int columnas = 0; columnas < 4; columnas++) {
                    if (filas == filaQuitar) {
                        filas.remove(filas);
                    }
                }
            }
            //Imprimir la nueva matriz sin la fila elegida
            System.out.println("Nueva Matriz");
            for (int filas = 0; filas < 4; filas++) {
                System.out.println();
                for (int columnas = 0; columnas < 4; columnas++) {
                    System.out.print(matriz[filas][columnas] + "\t");
                }
            }
            break;
    }//termina el switch
 
}//main


Quiero recorrer de nuevo toda la matriz y puntualizar que cuando las filas sean iguales que la decisión que tomó el usuario, es decir, cuando la fila sea igual a la fila que el usuario quiera eliminar, entonces eliminar completamente dicha fila, pero tengo dudas al hacerlo.

Utilicé filas.remove(filas); para eliminar las filas elegidas pero no funciona.
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

¿Cómo puedo eliminar una fila de una matriz?

Publicado por Kabuto (1381 intervenciones) el 25/05/2020 21:05:10
No se puede.

Los arrays y matrices primitivos son ESTÁTICOS, es decir, no pueden variar su tamaño durante la ejecución del programa.
No puedes añadir ni quitar filas.

Podrías "simular" que quitas una fila creando una nueva matriz, con un tamaño de fila inferior a la original, y copiar en ella todos los valores excepto los de la fila que vas a "eliminar".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

[SOLUCION]¿Cómo puedo eliminar una fila de una matriz?

Publicado por Billy Joel (876 intervenciones) el 26/05/2020 02:01:13
Lo resuelvo así
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
public static void main(String[] args) {
 
    //Inicialización de variables
    int[][] matriz = new int[4][4];
    String decision;
    int filaQuitar;
    Scanner input = new Scanner(System.in);
 
    //Inicialización de la matriz 4x4 con números aleatorios del 1 al 9
    for (int filas = 0; filas < 4; filas++) {
        System.out.println("");
        for (int columnas = 0; columnas < 4; columnas++) {
            matriz[filas][columnas] = (int) (Math.random() * 9 + 1);
            System.out.print(matriz[filas][columnas] + "\t");
        }
    }
 
    System.out.println("\n¿Desea eliminar alguna fila?");
    decision = input.nextLine();
    switch (decision) {
        case "si":
            System.out.println("¿Cuál fila desea eliminar?: ");
            filaQuitar = input.nextInt();
//                for (int filas = 0; filas < 4; filas++) {
//                    for (int columnas = 0; columnas < 4; columnas++) {
//                        if (filas == filaQuitar) {
//                            filas.remove(filas);
//                        }
//                    }
//                }
            matriz = removerFila(matriz, filaQuitar);
            //Imprimir la nueva matriz sin la fila elegida
            System.out.println("Nueva Matriz");
//                for (int filas = 0; filas < 4; filas++) {
//                    System.out.println();
//                    for (int columnas = 0; columnas < 4; columnas++) {
//                        System.out.print(matriz[filas][columnas] + "\t");
//                    }
//                }
            for (int i = 0; i < matriz.length; i++) {
                for (int j = 0; j < matriz[i].length; j++) {
                    System.out.print(matriz[i][j] + "\t");
                }
                System.out.println();
            }
            break;
    }//termina el switch
}//main
 
public static int[][] removerFila(int[][] matriz, int fila) {
    if (fila < 0 || fila >= matriz.length) {
        return matriz;
    } else {
        int[][] nueva = new int[matriz.length - 1][matriz[0].length];
        int i;
        for (i = 0; i < fila; i++) {
            nueva[i] = matriz[i];
        }
        for (; i < nueva.length; i++) {
            nueva[i] = matriz[i + 1];
        }
        return nueva;
    }
}

PD que for mas raro eh... jajaja

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar