Autor Tema: Java NetBeans programa para manejo de arreglos insertar crear actualizar elimina  (Leído 2537 veces)

0916

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola, quería pedir ayuda para solucionar este ejercicio.

Crea un un proyecto en netbeans con el siguiente menú

MENÚ
  • Insertar un elemento al arreglo
  • Crear un arreglo
  • Actualizar posiciones del arreglo
  • Eliminar un valor del arreglo


Tengo este código:

Código: [Seleccionar]
package ejem;

import java.util.*;

public class Ejem {

    public static void main(String[] args) {
        System.out.println("MENU");
        System.out.println("Insertar un elemento al arreglo");
        System.out.println("Crear un arreglo");
        System.out.println("actualizar posiciones del arreglo");
        System.out.println("Eliminar un valor del arreglo");

        Scanner leer = new Scanner(System.in);

        int posicion = 0;

        System.out.println("Dame el tamaño del arreglo: ");

        posicion = leer.nextInt();

        String[] arreglo = new String[posicion];

        for (int x = 0; x < arreglo.length; x++) {
            System.out.print("Dame el valor en la posicion" + x);

            arreglo[x] = leer.next();
        }

        System.out.println("estos son los valores que insertartaste");
        for (int x = 0; x < arreglo.length; x++) {
            System.out.println(arreglo[x]);
        }
        System.out.println("Quieres actualizar alguno? S/N");
        String respuesta=leer.next();
       
        int posicion_actualizar=0;
        if(respuesta.equals("S"))
        {
            System.out.println("que posicion del arreglo quieres actualizar?");
           
            posicion_actualizar=leer.nextInt();
           
            System.out.println("Escribe el nuevo valor en la poscion "+ posicion_actualizar);
            arreglo[posicion_actualizar]=leer.next();
        }
       
        System.out.println("Este es el arreglo actualizado");
       
           for(int x=0;x<arreglo.length;x++)
        {
            System.out.println(arreglo[x]);
        }   
        System.out.println("Este es el arreglo actualizado");
       
           for(int x=0;x<arreglo.length;x++)
        {
            System.out.println(arreglo[x]);
        }   
        for (int x = 0; x < arreglo.length; x++) {
            System.out.println("[" + x + "]=" + arreglo[x]);
        }
       
        System.out.println("tu arreglo es de " + arreglo.length + " posiciones");
        System.out.println("Que valor quieres eliminar de tu arreglo?");

        posicion = leer.nextInt();

        for (int x = posicion; x < arreglo.length - 1; x++) {
            arreglo[x] = arreglo[x + 1];
        }

        arreglo[arreglo.length - 1] = "";
        System.out.println("Arreglo modificado");
        for (int x = 0; x < arreglo.length; x++) {
            System.out.println("[" + x + "]=" + arreglo[x]);
            System.out.print("Dame el valor en la posicion" + x);

            arreglo[x] = leer.next();

        }

    }
}
« Última modificación: 12 de Marzo 2022, 17:37 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Me pueden ayudar
« Respuesta #1 en: 15 de Octubre 2021, 00:23 »
Hola.

Sería necesario que el menú se repita continuamente hasta que el usuario decida terminar el programa.
Se le pide opción al usuario y con un swith evaluamos que opción ha escogido.

Cada opción puede escribirse en un método separado, para facilitar las cosas, el arreglo y el Scanner para pedir datos por teclado pueden declararse como atributos de ámbito global.

Así, todos los métodos que vayamos a crear, tendrán acceso directo a estos atributos y podrán trabajar con ellos.

Pongo un ejemplo rápido, donde solo he creado alguna de las opciones del menú.
Si comprendes la forma en la que he estructurado el programa, intenta tú crear las otras opciones del menú que faltan por escribir.
Y luego cuando tenga más tiempo, te ayudo a corregir o completar lo que sea.

Código: [Seleccionar]
public class Menu {

private static String[] arreglo;
private static Scanner teclado = new Scanner(System.in);

public static void main(String[] args) {

int opcion = 0;

do {
System.out.println("\n\n\t\tMENU");
System.out.println("(1) - Insertar un elemento al arreglo");
System.out.println("(2) - Crear un arreglo");
System.out.println("(3) - actualizar posiciones del arreglo");
System.out.println("(4) - Eliminar un valor del arreglo");
System.out.println("(5) - Visualizar valores del arreglo");
System.out.println("(9) - TERMINAR PROGRAMA");
System.out.print("Elija opción: ");
opcion = Integer.parseInt(teclado.nextLine());

switch(opcion) {
case 1:
insertarElemento();
break;
case 2:
crearArreglo();
break;
case 3:
break;
case 4:
break;
case 5:
visualizarArreglo();
break;
case 9:
System.out.println("\n\t\tFIN DE PROGRAMA");
break;
default:
System.out.println("\nOpcion equivocada");
}

} while (opcion != 9);

}

private static void insertarElemento() {
if (arreglo == null)
System.out.println("\nERROR. Primero ha de crear un arreglo");
else {
//Buscamos primera posición libre
int libre = -1;
for (int i = 0; i < arreglo.length; i++)
if (arreglo[i] == null) {
libre = i;
break; //Fin de búsqueda
}
//Comprobamos si hemos encontrado alguna posicion libre
if (libre == -1)
System.out.println("\nNo hay posiciones libres."
+ "\nTendrá que eliminar valor o actualizar uno existente");
else {
System.out.print("\nIntroduzca valor: ");
arreglo[libre] = teclado.nextLine();
}
}
}

private static void crearArreglo() {
System.out.print("\nIndique tamaño del nuevo arreglo: ");
int tm = Integer.parseInt(teclado.nextLine());
if (tm > 0) {
arreglo = new String[tm];
System.out.println("\nArreglo creado. Ya puede insertar nuevos valores.");
}
else
System.out.println("\nERROR. Ha de indicar un tamaño mayor que 0");
}

private static void visualizarArreglo() {
if (arreglo == null)
System.out.println("\nERROR. Primero ha de crear un arreglo");
else {
System.out.println("\nValores registrados:");
for (String valor: arreglo)
if (valor != null)
System.out.print("[" + valor + "] ");
}
}

}
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

0916

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re: Me pueden ayudar
« Respuesta #2 en: 15 de Octubre 2021, 01:45 »
Creo que algo así, no sé si me equivoco.

Código: [Seleccionar]
package menu;

import java.util.*;

public class Menu {

    private static String[] arreglo;
    private static Scanner teclado = new Scanner(System.in);

    public static void main(String[] args) {

        int opcion = 0;

        do {
            System.out.println("\n\n\t\tMENU");
            System.out.println("(1) - Insertar un elemento al arreglo");
            System.out.println("(2) - Crear un arreglo");
            System.out.println("(3) - actualizar posiciones del arreglo");
            System.out.println("(4) - Eliminar un valor del arreglo");
            System.out.println("(5) - Visualizar valores del arreglo");
            System.out.println("(9) - TERMINAR PROGRAMA");
            System.out.print("Elija opción: ");
            opcion = Integer.parseInt(teclado.nextLine());

            switch (opcion) {
                case 1:
                    insertarElemento();
                    break;
                case 2:
                    crearArreglo();
                    break;
                case 3:
                    actualizarPosicion();
                    break;
                case 4:
                    eliminarValor();
                    break;
                case 5:
                    visualizarArreglo();
                    break;
                case 9:
                    System.out.println("\n\t\tFIN DE PROGRAMA");
                    break;
                default:
                    System.out.println("\nOpcion equivocada");
            }

        } while (opcion != 9);

    }

    private static void insertarElemento() {
        if (arreglo == null) {
            System.out.println("\nERROR. Primero ha de crear un arreglo");
        } else {
            //Buscamos primera posición libre
            int libre = -1;
            for (int i = 0; i < arreglo.length; i++) {
                if (arreglo[i] == null) {
                    libre = i;
                    break; //Fin de búsqueda
                }
            }
            //Comprobamos si hemos encontrado alguna posicion libre
            if (libre == -1) {
                System.out.println("\nNo hay posiciones libres."
                        + "\nTendrá que eliminar valor o actualizar uno existente");
            } else {
                System.out.print("\nIntroduzca valor: ");
                arreglo[libre] = teclado.nextLine();
            }
        }
    }

    private static void crearArreglo() {
        System.out.print("\nIndique tamaño del nuevo arreglo: ");
        int tm = Integer.parseInt(teclado.nextLine());
        if (tm > 0) {
            arreglo = new String[tm];
            System.out.println("\nArreglo creado. Ya puede insertar nuevos valores.");
        } else {
            System.out.println("\nERROR. Ha de indicar un tamaño mayor que 0");
        }
    }

    private static void actualizarPosicion() {
        System.out.println("Quieres actualizar alguno? S/N");
        String respuesta = teclado.next();

        int posicion_actualizar = 0;
        if (respuesta.equals("S")) {
            System.out.println("que posicion del arreglo quieres actualizar?");

            posicion_actualizar = teclado.nextInt();

            System.out.println("Escribe el nuevo valor en la poscion " + posicion_actualizar);
            arreglo[posicion_actualizar] = teclado.next();
        }

        System.out.println("Este es el arreglo actualizado");

        for (int x = 0; x < arreglo.length; x++) {
            System.out.println(arreglo[x]);
        }
    }

    private static void eliminarValor() {
        int posicion;
        for (int i = 0; i < arreglo.length; i++) {
            System.out.println("[" + i + "]=" + arreglo[i]);
        }
        System.out.println("tu arreglo es de " + arreglo.length + " posiciones");
        System.out.println("Que valor quieres eliminar de tu arreglo?");

        posicion=teclado.nextInt();

        for (int i = 0; i < arreglo.length - 1; i++);
        {
            arreglo[i] = arreglo[i + 1];
        }
        //posiciones3
        //indice = 2
        arreglo[arreglo.length - 1] = "";
        System.out.println("Arreglo modificado");
        for (int i = 0; i < arreglo.length; i++) {
            System.out.println("[" + i + "]=" + arreglo[i]);
        }
    }

    private static void visualizarArreglo() {
        if (arreglo == null) {
            System.out.println("\nERROR. Primero ha de crear un arreglo");
        } else {
            System.out.println("\nValores registrados:");
            for (String valor : arreglo) {
                if (valor != null) {
                    System.out.print("[" + valor + "] ");
                }
            }
        }
    }

}
« Última modificación: 12 de Marzo 2022, 17:38 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Me pueden ayudar
« Respuesta #3 en: 15 de Octubre 2021, 16:51 »
No lo he probado pero parece que podría servir.


Solo comentar que, otra forma de "eliminar" valores de un arreglo sería dándoles valor null.
De ese modo, no es necesario, mover todos los valores una posición y "eliminar" el de la última posición.

Por eso en mis métodos, tanto para insertar elemento como para mostrar los valores en pantalla, compruebo que posiciones tienen valor null para decidir si puedo insertar ahí un valor o para decidir si no he de mostrarlo en pantalla.

Es otra forma de hacerlo. La tuya también sería correcta.
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".