Autor Tema: Java Ejercicio Matrices menú llenar consultar invertir dimensiones Intelij códig  (Leído 2134 veces)

Alesxander

  • Sin experiencia
  • *
  • Mensajes: 1
    • Ver Perfil
Hola soy nuevo y apenas estoy empezando con la programación y todavía no he aprendido a hacer este tipo de Algoritmo, agradecería ayuda.


Ejercicio

Crear un menú en JOptionPane que tenga las siguientes opciones:

1. Llenar Matriz

2. Consultar datos de la matriz.

3. Invertir el orden de la matriz

4. Salir.

Si el usuario elige la opción 1, el sistema debe preguntar las dimensiones que quiere que tenga la matriz y almacenar allí números (ingresados por el usuario) como texto.

Si el usuario elige la opción 2, el sistema mostrará, en pantalla, al usuario la matriz en el orden que la halla ingresado el usuario.

Si el usuario elige la opción 3, el sistema mostrará sus columnas en orden invertido. Ejemplo

MATRIZ      MATRIZ INVERTIDA

1 2 3                    7 8 9

4 5 6                    4 5 6

7 8 9                    1 2 3

Si el usuario elige la opción 4, el sistema deberá preguntar si está seguro que quiere salir del sistema y solo terminará el algoritmo si el usuario lo confirma.

En caso de elegir una opción diferente, el sistema de mostrar un mensaje
« Última modificación: 12 de Marzo 2022, 17:45 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ejercio de Matrices Java programando en Intelij
« Respuesta #1 en: 11 de Noviembre 2021, 18:03 »
Vamos a desarrollarlo poco a poco.

Mostraremos un menú para que el usuario introduzca la opción.
Esta opción la analizaremos con un switch y llamaremos a distintos métodos según lo que haya escogido.
Cada opción tendrá su propio método.

Para que los métodos tengan acceso a la matriz sobre la que trabajaremos, esta la declararemos como atributo de la clase, para que así tenga un "ámbito global" y sea visible desde cualquier parte del programa.

El menú se mostrará dentro de un bucle while que se repetirá mientras un boolean tenga valor false. Cuando el usuario confirme que SÍ quiere salir, el boolean pasará a valor true y se terminará el programa.

Pongo el programa principal y el método para la opción 4, la de salir si el usuario lo confirma.

Comprueba el código y asegúrate de que lo entiendes, pregunta lo que necesites.
Faltarían los métodos para las opciones 1, 2 y 3.
Luego miraré de desarrollarlo, aunque si primero te atreves tú a intentar hacerlos, mejor.

Código: [Seleccionar]
import javax.swing.JOptionPane;

public class MenuMatriz {
//Matriz sobre la que vamos a trabajar
private static String[][] matriz;
//Texto con las opciones del menú
private static final String TEXTO_MENU = "1. Llenar Matriz\n2. Consultar datos de la matriz.\n"
+ "3. Invertir el orden de la matriz\n4. Salir.";

public static void main(String[] args) {

String opcion = "";
boolean salir = false;

while (!salir) {
//Mostramos menú
opcion = JOptionPane.showInputDialog(null, TEXTO_MENU, "Elija opción",
JOptionPane.QUESTION_MESSAGE);
//Si usuario elige botón CANCELAR, equivaldrá a elegir la opción de "Terminar programa"
if (opcion == null)
opcion = "4";
//Comprobamos opcion escogida
switch(opcion) {
case "1":
//opcion1();
break;
case "2":
//opcion2();
break;
case "3":
//opcion3();
break;
case "4":
salir = opcion4();
break;
default:
JOptionPane.showMessageDialog(null, "Opción equivocada",
"Elija opción", JOptionPane.WARNING_MESSAGE);
}

}
//Mensaje final
JOptionPane.showMessageDialog(null, "FIN DE PROGRAMA",
"Terminar programa", JOptionPane.INFORMATION_MESSAGE);

}

private static boolean opcion4() {
int pregunta = JOptionPane.showConfirmDialog(null, "¿Seguro que quiere salir?",
"Terminar programa", JOptionPane.YES_NO_OPTION);
if (pregunta == JOptionPane.YES_OPTION)
return true;
else
return false;
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ejercio de Matrices Java programando en Intelij
« Respuesta #2 en: 11 de Noviembre 2021, 18:59 »
Para la opcion1, hay que pedir dimensiones de la matriz, filas y columnas. Con estos datos construimos matriz y pasamos a pedir valores mediante bucles anidados.
Para aligerar, no estoy poniendo posibles controles de errores, como que no nos pasen enteros para las filas y columnas, o cadenas vacías para los valores...
Eso es algo que se puede añadir después si fuera necesario.
Código: [Seleccionar]
private static void opcion1() {
//Preguntamos dimensiones de la matriz
int filas = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas filas tendrá la matriz?"));
int columnas = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas columnas tendrá la matriz?"));
//Creamos nueva matriz
matriz = new String[filas][columnas];
//Pedimos valores
for (int f = 0; f < filas; f++)
for (int c = 0; c < columnas; c++)
matriz[f][c] = JOptionPane.showInputDialog("Deme un valor...");

JOptionPane.showMessageDialog(null, "Nueva matriz creada",
"Crear matriz", JOptionPane.INFORMATION_MESSAGE);
}

Opcion 2.
Para mostrar la matriz en un JOptionPane, tenemos que construir un String con todos los valores, separados con espacio en blanco y con saltos de línea tras terminar cada fila.
Para ello podemos usar un objeto StringBuilder, con bucles anidados recorremos la matriz y en cada iteración añadimos un valor al StringBuilder.
Luego al final, ya tan solo hay que mostrarlo en un JOptionPane
Código: [Seleccionar]
private static void opcion2() {
//Construiremos un String con los datos de la matriz
StringBuilder datos = new StringBuilder("MATRIZ\n");
for (int f = 0; f < matriz.length; f++) {
for (int c = 0; c < matriz[f].length; c++)
datos.append(matriz[f][c] + " ");

datos.append("\n");//Cada fila acaba con un salto de línea
}
//String construido, lo mostramos
JOptionPane.showMessageDialog(null, datos, "Datos Matriz", JOptionPane.INFORMATION_MESSAGE);
}

Opcion 3.
Prácticamente igual que la opción 2, solo hay que invertir el orden en el que recorremos las filas para invertir la matriz.
Código: [Seleccionar]
private static void opcion3() {

StringBuilder datos = new StringBuilder("MATRIZ\n");
//Para invertir, las filas comienzan desde la última a la primera
for (int f = matriz.length -1 ; f >= 0; f--) {
for (int c = 0; c < matriz[f].length; c++)
datos.append(matriz[f][c] + " ");

datos.append("\n");
}
JOptionPane.showMessageDialog(null, datos, "Matriz invertida", JOptionPane.INFORMATION_MESSAGE);
}

Y ya está, eso es todo. Cualquier cosa que no se entienda, solo hay que preguntar.

Abajo pongo el código final definitivo.
Código: [Seleccionar]
import javax.swing.JOptionPane;

public class MenuMatriz {
//Matriz sobre la que vamos a trabajar
private static String[][] matriz;
//Textp con las opciones del menú
private static final String TEXTO_MENU = "1. Llenar Matriz\n2. Consultar datos de la matriz.\n"
+ "3. Invertir el orden de la matriz\n4. Salir.";

public static void main(String[] args) {

String opcion = "";
boolean salir = false;

while (!salir) {
//Mostramos menú
opcion = JOptionPane.showInputDialog(null, TEXTO_MENU, "Elija opción",
JOptionPane.QUESTION_MESSAGE);
//Si usuario elige botón CANCELAR, equivaldrá a elegir la opción de "Terminar programa"
if (opcion == null)
opcion = "4";
//Comprobamos opcion escogida
switch(opcion) {
case "1":
opcion1();
break;
case "2":
opcion2();
break;
case "3":
opcion3();
break;
case "4":
salir = opcion4();
break;
default:
JOptionPane.showMessageDialog(null, "Opción equivocada",
"Elija opción", JOptionPane.WARNING_MESSAGE);
}

}
//Mensaje final
JOptionPane.showMessageDialog(null, "FIN DE PROGRAMA",
"Terminar programa", JOptionPane.INFORMATION_MESSAGE);

}

private static void opcion1() {
//Preguntamos dimensiones de la matriz
int filas = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas filas tendrá la matriz?"));
int columnas = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas columnas tendrá la matriz?"));
//Creamos nueva matriz
matriz = new String[filas][columnas];
//Pedimos valores
for (int f = 0; f < filas; f++)
for (int c = 0; c < columnas; c++)
matriz[f][c] = JOptionPane.showInputDialog("Deme un valor...");

JOptionPane.showMessageDialog(null, "Nueva matriz creada",
"Crear matriz", JOptionPane.INFORMATION_MESSAGE);
}

private static void opcion2() {
//Construiremos un String con los datos de la matriz
StringBuilder datos = new StringBuilder("MATRIZ\n");
for (int f = 0; f < matriz.length; f++) {
for (int c = 0; c < matriz[f].length; c++)
datos.append(matriz[f][c] + " ");

datos.append("\n");//Cada fila acaba con un salto de línea
}
//String construido, lo mostramos
JOptionPane.showMessageDialog(null, datos, "Datos Matriz", JOptionPane.INFORMATION_MESSAGE);
}

private static void opcion3() {

StringBuilder datos = new StringBuilder("MATRIZ\n");
//Para invertir, las filas comienzan desde la última a la primera
for (int f = matriz.length -1 ; f >= 0; f--) {
for (int c = 0; c < matriz[f].length; c++)
datos.append(matriz[f][c] + " ");

datos.append("\n");
}
JOptionPane.showMessageDialog(null, datos, "Matriz invertida", JOptionPane.INFORMATION_MESSAGE);
}

private static boolean opcion4() {
int pregunta = JOptionPane.showConfirmDialog(null, "¿Seguro que quiere salir?",
"Terminar programa", JOptionPane.YES_NO_OPTION);
if (pregunta == JOptionPane.YES_OPTION)
return true;
else
return false;
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".