Java - Ayuda ejercicio de listas

 
Vista:

Ayuda ejercicio de listas

Publicado por Daniel Alejandro Giraldo Giraldo (1 intervención) el 04/03/2020 21:57:35
hola, buen día, programadores. soy un programador bastante novato, y en este momento mi maestro puso algunos ejercicios y tengo algunos problemas con ellos.
este es el problema con el que me encuentro atascado últimamente

"Inventario dinámico"

Don Chepe maneja su tienda de barrio como todo un Gurú de la logística y, para
ayudarlo, está su esposa doña Marta. Cada que un nuevo producto ingresa a la tienda,
don Chepe le grita a doña Marta “entra” y el código del producto. Por ejemplo, el grito
“entra 1234” significa que el producto con código 1234 ingresó al inventario de la tienda.
A don chepe no le importan mucho las unidades, solo saber cuáles productos tiene y
cuáles no. Así mismo, cuando se quedan sin existencias de un determinado producto
don Chepe grita “sale” y el código respectivo. Eso sí, don Chepe nunca se equivoca:
nuca grita “entra” de un código que ya esté en el inventario, y nunca grita “sale” de uno
que no esté.

A doña Marta le toca llevar un registro cuidadoso de todo lo que entra y todo lo que sale
para saber en cada momento qué exactamente es lo que tienen en el inventario, pues
cuando don Chepe grita “tenemos” ella debe recitar la lista de códigos que hay en el
inventario, ordenados cronológicamente según su llegada, ¿le podrías ayudar con un
programa que le facilite la vida?

Entrada
La entrada contiene una serie de “gritos”, de a uno por línea y los cuales pueden ser de
tres tipos (sin comillas y sin puntuación):
 “entra”, un espacio en blanco, y un número entero positivo menor a 10000
 “sale”, un espacio en blanco, y un número entero positivo menor a 10000
 “tenemos”
La entrada finaliza con una línea con el texto “fin” (sin comillas)
Salida

Por cada entrada “tenemos”, la salida debe tener una línea con el mensaje “tenemos”
(sin las comillas), seguida por los códigos de los productos que en ese momento se
tengan, de a uno por línea y en orden cronológico según orden de llegada.

Ejemplo de entrada
entra 1001
entra 1002
entra 1003
sale 1002
tenemos
sale 1001
entra 1002
tenemos
fin

Ejemplo de salida
tenemos
1001
1003
tenemos
1003
1002

mi código es el siguiente

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
import java.util.*;
class Main {
  public static void main(String[] args) {
    Scanner entrada = new Scanner (System.in);
    LinkedList <Integer> inventario = new LinkedList <Integer>();
    while (true){
      String grito = entrada.next();
      if (grito.equals("fin")){
        System.out.println("fin");
        break;
      }
      else if (grito.equals("entra")){
        int codigo = entrada.nextInt();
        inventario.add(codigo);
      }
      else if (grito.equals("sale")){
        int codigo = entrada.nextInt();
        inventario.remove(codigo);
      }
      else if (grito.equals("tenemos")){
        System.out.println("tenemos");
        ListIterator iter = inventario.listIterator();
        while(iter.hasNext()){
          System.out.println(iter.next());
        }
      }
    }
  }
}


el código funciona con los "gritos": "entra", "tenemos" y "fin"

mi mayor problema es que no se como hacer la parte de "sale" y que no se como hacer que cuando se use "entra" y se pone el mismo "codigo" dos o mas ocaciones solamente se agregar uno en vez de dos veces
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda ejercicio de listas

Publicado por Rodrigo (623 intervenciones) el 05/03/2020 05:28:36
Usa el metodo contains() de la lista para preguntar antes de insertar.
Solo si el elemento no esta insertas.
No se que ocurre cuando intentas borrar un elemento que no esta, pero si hubiera excepciones, tambien podrias usar contains para preguntar antes de borrar.
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