Java - Obtener nombre y código - Java/Netbeans

 
Vista:

Obtener nombre y código - Java/Netbeans

Publicado por Wizb (1 intervención) el 12/10/2020 20:42:38
Muy buenas, quisiera saber si me podrían ayudar con este código. Lo que busco es obtener el nombre y código del despachador que vendió X cantidades de galones de gasolina del tipo corriente..
Lo he intentado hacer pero no encuentro el como, adjunto la codificación por si pueden ayudarme, Muchas gracias.
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
121
122
123
124
public static void main(String[] args) {
        String tipo;
        double valor;
        Gasolina gasolina = new Gasolina();
        int contador = 0, contador2 = 0, op;
        do {
            tipo = JOptionPane.showInputDialog(null, "Digite el tipo de gasolina");
            valor = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite el valor por galon"));
            gasolina = new Gasolina(tipo, valor);
            gasolina.Guardar(gasolina);
            contador++;
        } while (contador < 2);
        do {
            op = Integer.parseInt(JOptionPane.showInputDialog(null, "1<----- Registrar Despachador"
                    + "\n2<----- Consultar Despachador"
                    + "\n3<----- Consutar Gasolina"
                    + "\n4<----- Vender"
                    + "\n5<---- Salir"));
            switch (op) {
                case 1:
                    GuardarEmpleado();
                    contador2++;
                    break;
                case 2:
                    ConsultarEmpleado();
                    break;
                case 3:
                    ConsultarGasolina();
                    break;
                case 4:
                    if (contador2 == 0) {
                        JOptionPane.showMessageDialog(null, "No hay ningún despachador registrado");
                    } else {
                        Vender();
                    }
                    break;
            }
        } while (op != 5);
        Consulta();
    }
    private static void GuardarEmpleado() {
        Despachador despachador;
        String codigo, nombre;
        int seguir;
        do {
            codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
            nombre = (JOptionPane.showInputDialog(null, "Digite el nombre del despachador"));
            despachador = new Despachador(codigo, nombre);
            despachador.Guardar(despachador);
            seguir = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Registrar otro despachador\n2<----- Dejar de registrar"));
 
        } while (seguir != 2);
    }
    private static void ConsultarEmpleado() {
        Despachador despachador = new Despachador();
        if (despachador.Consultar() != null) {
            for (Despachador item : despachador.Consultar()) {
                JOptionPane.showMessageDialog(null, "Codigo: " + item.getCodigo() + "\nNombre: " + item.getNombre());
            }
        } else {
            JOptionPane.showMessageDialog(null, "No hay ningún despachador registrados");
        }
    }
    private static void ConsultarGasolina() {
        Gasolina gasolina = new Gasolina();
 
        for (Gasolina item : gasolina.Consultar()) {
            if (item != null) {
                JOptionPane.showMessageDialog(null, "" + "Tipo: " + item.getTipo() + "\nValor: " + item.getValor());
            } else {
                JOptionPane.showMessageDialog(null, "No hay gasolina registrada");
            }
        }
    }
    private static void Vender() {
        Despachador despachador = new Despachador();
        String codigo, t = "";
        int tipo, esta = 0;
        double galones, total, precio = 0;
        Gasolina gasolina = new Gasolina();
        do {
            codigo = JOptionPane.showInputDialog(null, "Digite el codigo del despachador");
            for (Despachador item : despachador.Consultar()) {
                if (item.getCodigo().equals(codigo)) {
                    esta = 1;
                }
            }
            if (esta == 0) {
                JOptionPane.showMessageDialog(null, " El deespachador no se encuentra registrado ");
                GuardarEmpleado();
            }
        } while (esta == 0);
        do {
            tipo = Integer.parseInt(JOptionPane.showInputDialog(null, "1<---- Extra\n2<----- Corriente\nseleccione el tipo de gasolina"));
        } while (!(tipo == 1 || tipo == 2));
        if (tipo == 1) {
            t = "Extra";
        } else if (tipo == 2) {
            t = "Corriente";
        }
        for (Gasolina item : gasolina.Consultar()) {
            if (item.getTipo().equals(t)) {
                precio = item.getValor();
            }
        }
        JOptionPane.showMessageDialog(null, "Dato del precio: " + precio, "PRECIOS",JOptionPane.INFORMATION_MESSAGE);
        galones = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite la cantidad de galones"));
        total = galones * precio;
        Venta venta = new Venta(codigo, galones, t, total);
        venta.Guardar(venta);
        JOptionPane.showMessageDialog(null, " El total a pagar es: " + total);
    }
    private static void Consulta() {
        double total = 0, galones = 0;
        Venta venta = new Venta();
        for (Venta item : venta.Consultar()) {
            total += item.getTotal();
            if ("Extra".equals(item.getTipo_gasolina())) {
                galones += item.getGalones();
            }
        }
    JOptionPane.showMessageDialog(null, "Cantidad de galones vendidos de gasolina tipo Extra " + galones + "\nTotal en dinero generado en la jornada " + total, "REGISTRO DE VENTAS", JOptionPane.INFORMATION_MESSAGE);
    }
}
Pido disculpas si el código es demasiado extenso para ustedes lo hago por si acaso omito algo y lo necesitan para poder ayudarme, es primera vez que recurro a algún foro y no se como van estos.
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

Obtener nombre y código - Java/Netbeans

Publicado por Kabuto (1381 intervenciones) el 16/10/2020 13:50:49
Hola.

Creo que el código necesita una reescritura y aclarar algunos conceptos que me parece aún no tienes claros.
Veo cosas un poco raras..., por ejemplo, vamos a fijarnos en la parte final del método Vender() (por cierto, nombres de métodos deberían comenzar con minúscula)

1
2
3
4
5
6
7
......
.......
........
  Venta venta = new Venta(codigo, galones, t, total);
  venta.Guardar(venta);
  JOptionPane.showMessageDialog(null, " El total a pagar es: " + total);
}

La 1º línea crea un nuevo objeto llamado venta con los datos obtenidos anteriormente.

La 2ª línea le pide a venta, que se guarde a sí mismo.., venta está guardando a venta...
Como no tengo el código de la clase Venta, no se en que consiste exactamente el método Guardar(). Pero en cualquier caso, es raro que un objeto guarde una referencia de sí mismo.

La 3º línea muestra un mensaje y el método Vender() termina.
Y al terminar el método, todos los objetos y variables que se han creado DENTRO de este método desaparecen.
Solo permanecería aquel objeto que haya guardado alguna referencia suya en otro objeto que hubiera sido creado FUERA del método Vender()

¿Qué ha pasado entonces con el objeto llamado venta que ha creado este método?
Pues que se ha perdido. No se ha guardado ninguna referencia suya FUERA de este método, la única referencia que se ha guardado ha sido DENTRO del método, de hecho, la referencia se ha guardado dentro del propio objeto.
Es decir, que el objeto venta, que tenía una copia de su propia referencia, desaparece en cuanto termina el método Vender()

En definitiva, no se están guardando las ventas en ningún sitio, conforme se registran, se pierden...


Algo parecido ocurre con la Gasolina:

1
2
3
4
5
6
7
do {
    tipo = JOptionPane.showInputDialog(null, "Digite el tipo de gasolina");
    valor = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite el valor por galon"));
    gasolina = new Gasolina(tipo, valor);
    gasolina.Guardar(gasolina);
    contador++;
} while (contador < 2);

Las lineas marcadas en negrita...
Se crea un objeto nuevo llamado gasolina.
Se le pide a gasolina, que se guarde a sí mismo....
Se aumenta el contador y se repite el bucle.
¿Y qué ocurre al repetir el bucle?

Que otra vez se crea un nuevo objeto llamado gasolina.
Esto implica que el objeto gasolina creado en la primera iteración del bucle, se pierde en la siguiente repetición. No importa que se le haya pedido que se guarde a sí mismo (que insisto, es raro....), se haya guardado o no.. cada vez que haces un new Gasolina() y lo asignas a la MISMA REFERENCIA, el nombre gasolina, estás destruyendo la información que pudiera contener anteriormente.

No se está guardando correctamente las gasolinas que se intentan registrar.


Hay que repasar los conceptos de POO y reescribir el código de este programa.

Si te es posible, publica aquí el enunciado de este ejercicio, para que sepamos mejor que se pide, que condiciones debe cumplir cada clase, etc.. y así te podemos mostrar soluciones de forma que no se pierda la información
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