Problema con la sentencia switch en ejercicio. JAVA
Publicado por Omi (6 intervenciones) el 26/05/2020 23:32:38
Hola, tengo un error en una serie de Switch en java. En mi ejercicio debo hacer una matriz 4x4 llenada con números aleatorios y luego preguntar al usuario si quiere agregar o eliminar alguna fila o columna, el problema que tengo yace que se me relaciona un switch con otro.

Como se ve en la imagen, luego de yo agregar una fila si quisiera agregar una nueva columna no podría ya que se me relacionan las respuestas de un switch con el otro. Estoy poniendo correctamente los break; luego de cada case. Así que no puedo localizar el problema.
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
111
112
113
114
115
116
117
118
119
120
public static void main(String[] args) {
//Inicialización de variables
int[][] matriz = new int [4][4];
String decision, decision2, decision3;
int nuevaFila, nuevaColumna, filaQuitar;
Scanner input = new Scanner(System.in);
//Inicialización de la matriz 4x4 con números aleatorios del 1 al 9
System.out.println("MATRIZ");
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.print("\n¿Desea agregar una fila nueva? ");
decision = input.nextLine();
switch (decision){
case "si":
System.out.print("¿En qué posición (fila) desea insertar esta nueva fila?: ");
nuevaFila = input.nextInt();
for (int k = 0; k < 4; k++) {
System.out.print("Inserte el elemento " + "[" + nuevaFila + "," + k + "]: ");
matriz[nuevaFila][k] = input.nextInt();
} System.out.println();
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;
case "no":
System.out.println("Ok");
break;
default:
System.out.println("Ingrese una opción correcta");
break;
}//Fin de decisión fila
System.out.print("\n¿Desea agregar una nueva columna?: ");
decision2= input.nextLine();
switch(decision2){
case "si":
System.out.print("¿En qué posición desea agregar la nueva columna?: ");
nuevaColumna= input.nextInt();
for (int i = 0; i < 4; i++) {
System.out.print("Inserte el elemento " + "[" + i + "," + nuevaColumna + "]: ");
matriz[i][nuevaColumna] = input.nextInt();
}
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;
case "no":
System.out.println("Ok");
break;
default:
System.out.println("Ingrese una opción correcta");
break;
} //fin de decisión columna
System.out.print("\n¿Desea eliminar alguna fila?: ");
decision3= input.nextLine();
switch(decision3){
case "si":
System.out.print("\n¿Cuál fila desea eliminar?: ");
filaQuitar = input.nextInt();
//Hacemos una nueva matriz copiando los valores de la original y movemos la fila elegida
int[][] nuevaMatriz = new int[matriz.length - 1][matriz[0].length];
for (int filas = 0; filas < nuevaMatriz.length; filas++) {
for (int columnas = 0; columnas < nuevaMatriz[0].length; columnas++) {
if (filas >= filaQuitar) {
nuevaMatriz[filas][columnas] = matriz[filas+1][columnas];
} else{
nuevaMatriz[filas][columnas] = matriz[filas][columnas];
}
}
}
//Imprimir la nueva matriz sin la fila elegida
System.out.print("\nNueva Matriz");
for (int filas = 0; filas < nuevaMatriz.length; filas++) {
System.out.println();
for (int columnas = 0; columnas < nuevaMatriz[0].length; columnas++) {
System.out.print(nuevaMatriz[filas][columnas] + "\t");
}
}
break;
case "no":
System.out.println("Ok");
break;
default:
System.out.println("Ingrese una opción correcta");
break;
}//fin de decisión quitar fila
}//main

Como se ve en la imagen, luego de yo agregar una fila si quisiera agregar una nueva columna no podría ya que se me relacionan las respuestas de un switch con el otro. Estoy poniendo correctamente los break; luego de cada case. Así que no puedo localizar el problema.
Valora esta pregunta


0