Problemas con un ArrayList
Publicado por Abel (6 intervenciones) el 12/03/2019 12:01:16
Tengo el siguiente proyecto, lo que quiero es evitar que el usuario introduzca precios diferentes para el mismo producto. Una vez ha "comprado" un producto, si quiere volver a comprarlo deberá ser al precio que decidió antes. Así que solo incrementaré la cantidad del producto sin modificar el precio.
todo lo tengo dentro de un switch, y al ejecutarse el metodo comprobarProducto, al introducir otra vez los productos, sin pedirme el precio, me da error.
Este método esta en el main:
Y este es el de Producto, que es el que invoco en el método estático.
Muchas gracias
todo lo tengo dentro de un switch, y al ejecutarse el metodo comprobarProducto, al introducir otra vez los productos, sin pedirme el precio, me da error.
Este método esta en el main:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private static void comprobarProducto(List <Producto> listper, String producto){
Producto pextra=new Producto ();
Scanner sc=new Scanner (System.in);
boolean repetido=false;
listper.contains(producto); //esto no me funciona para comprobar si tiene el producto, siempre me da false
for(Producto c:listper){
if(c.getDescripcion()==producto){ //si el producto de la lista es el mismo que el del metodo se pide solo la cantidad
repetido=true;
}
}
if(repetido){
int posicion=listper.indexOf(producto);
System.out.println("¿Cuántos "+producto+" quieres de nuevo?");
int cantidad=(listper.get(posicion).getCantidad())+sc.nextInt();
pextra.setCantidad(cantidad);
pextra.setDescripcion(producto);
pextra.setPrecio(listper.get(posicion).getPrecio());
listper.add(posicion,pextra);
}else{
pextra.rellenarLista(producto);
listper.add(pextra);
}
}
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
package compraventalinked;
import java.util.List;
import java.util.Scanner;
public class Producto {
private int cantidad;
private String descripcion;
private float precio;
public Producto() {
}
public Producto( int cantidad, String descripcion, float precio) {
this.cantidad = cantidad;
this.descripcion = descripcion;
this.precio = precio;
}
public int getCantidad() {
return cantidad;
}
public void setCantidad(int cantidad) {
this.cantidad = cantidad;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public float getPrecio() {
return precio;
}
public void setPrecio(float precio) {
this.precio = precio;
}
public void venderInformacion(){
}
public void venderProducto(){
Scanner sc=new Scanner (System.in);
System.out.println("¿Cuantos "+descripcion+" quiere?");
int vendido=sc.nextInt();
while(cantidad<vendido){
System.out.println("No tenemos esa cantidad de productos. Actualmente tenemos "+cantidad+" "+descripcion);
System.out.println("Cuantos productos te quieres llevar ahora: ");
vendido=sc.nextInt();
}
cantidad=cantidad - vendido;
System.out.println("Deberá pagar: "+precio*vendido+"€");
}
public void devolverProducto(){
cantidad++;
System.out.println("El dinero a devolver es de: "+precio+"€");
}
public void rellenarLista(String producto){
Scanner sc=new Scanner (System.in);
descripcion=producto;
System.out.println("¿Cuantos "+descripcion+" quiere?");
cantidad=sc.nextInt();
System.out.println("Cuál es el precio por cada producto");
precio=sc.nextFloat();
}
public float precioFinal(){
float preciofinal=precio*cantidad;
return preciofinal;
}
}
Muchas gracias
Valora esta pregunta
0