Tienda de Electrodomesticos
Publicado por Geraldine (25 intervenciones) el 30/11/2018 21:50:18
Que tal compañeros? Necesito ayuda con un error que me da el siguiente ejercicio...
Crear un proyecto en NetBean en cual en un paquete llamado Tienda defina las siguientes clases:
a) Clase Electrodoméstico: tendrá como atributo protegidos el precio base, el consumo eléctrico (que será un entero entre 1 y 4) y el peso. Tendrá un constructor que recibirá el valor de todos los atributos y dos métodos abstractos mostrar y precio final, este ultimo será ejecutado cuando se ejecute el método mostrar. Al momento de calcular el precio final el precio base se incrementara tomando en cuenta el consumo energético y el peso del electrodoméstico de acuerdo a las siguientes tablas:
https://ibb.co/smf7p6P
b) Clase Lavadora que deriva de Electrodoméstico: tendrá como atributo privado la carga de la Lavadora (este tendrá como valor mínimo 5 kg en caso de que la carga indicada sea menor que 5 kg). El constructor recibirá todos los atributos de la lavadora. Cuando se calcule el precio final si la carga es mayor a los 30 kg se aumentara el precio final en 50$, de no ser así no habrá ningún incremento.
c) Clase Televisor que deriva de Electrodoméstico: tendrá como atributo privado tamaño (de la pantalla en pulgadas), el constructor recibirá todos los valores del televisor. Al momento del calcular el precio final si el televisor tiene más de 40 pulgadas se incrementara el precio final en un 30%. d) Clase Principal: se definirán las variables requeridas y un ArrayList del tipo de la clase Electrodoméstico, y usaremos el siguiente menú de opciones para manejar el proyecto:
Menú
1._ Leer archivo Tienda
2._ Mostrar electrodomésticos.
3._ Terminar.
>La opción 1: leerá el contenido del archivo Tienda.txt y lo almacenara en un ArrayList del tipo Electrodoméstico.
>La opción 2: recorrerá el ArrayList y mostrara los datos del electrodoméstico dependiendo el electrodoméstico se indicar si es un Televisor o una Lavadora.
>La opcion3: terminara la aplicación.
Clase Electrodomesticos
Clase Lavadora
Clase Televisor
Clase Apoyo
Clase Principal
El problema que noto en mi código es que al leer el archivo de texto Tienda, al mostrar los resultados el programa identifica mal el Precio Base, el Consumo Energético y la Carga/Tamaño.
Por ejemplo, el Precio Base debería ser 100, el Consumo Energético ser tipo 2 y la Carga ser 150. Ademas, sospecho que el precio final no es el correcto.
https://ibb.co/rQSCkhK
Les dejo el archivo en Java con el texto. Si pueden decirme en que me estoy equivocando se los agradecería full.
Crear un proyecto en NetBean en cual en un paquete llamado Tienda defina las siguientes clases:
a) Clase Electrodoméstico: tendrá como atributo protegidos el precio base, el consumo eléctrico (que será un entero entre 1 y 4) y el peso. Tendrá un constructor que recibirá el valor de todos los atributos y dos métodos abstractos mostrar y precio final, este ultimo será ejecutado cuando se ejecute el método mostrar. Al momento de calcular el precio final el precio base se incrementara tomando en cuenta el consumo energético y el peso del electrodoméstico de acuerdo a las siguientes tablas:
https://ibb.co/smf7p6P
b) Clase Lavadora que deriva de Electrodoméstico: tendrá como atributo privado la carga de la Lavadora (este tendrá como valor mínimo 5 kg en caso de que la carga indicada sea menor que 5 kg). El constructor recibirá todos los atributos de la lavadora. Cuando se calcule el precio final si la carga es mayor a los 30 kg se aumentara el precio final en 50$, de no ser así no habrá ningún incremento.
c) Clase Televisor que deriva de Electrodoméstico: tendrá como atributo privado tamaño (de la pantalla en pulgadas), el constructor recibirá todos los valores del televisor. Al momento del calcular el precio final si el televisor tiene más de 40 pulgadas se incrementara el precio final en un 30%. d) Clase Principal: se definirán las variables requeridas y un ArrayList del tipo de la clase Electrodoméstico, y usaremos el siguiente menú de opciones para manejar el proyecto:
Menú
1._ Leer archivo Tienda
2._ Mostrar electrodomésticos.
3._ Terminar.
>La opción 1: leerá el contenido del archivo Tienda.txt y lo almacenara en un ArrayList del tipo Electrodoméstico.
>La opción 2: recorrerá el ArrayList y mostrara los datos del electrodoméstico dependiendo el electrodoméstico se indicar si es un Televisor o una Lavadora.
>La opcion3: terminara la aplicación.
Clase Electrodomesticos
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
package Tienda;
public abstract class Electrodomesticos {
//Atributos:
protected double precioBase;
protected int consumoElectrico;
protected int peso;
//Constructor:
public Electrodomesticos(double pre, int consu, int pe) {
precioBase = pre;
consumoElectrico = consu;
peso = pe;
}
//Declaramos los metodos get:
public double getPrecioBase() {
return precioBase;
}
public int getConsumoElectrico() {
return consumoElectrico;
}
public int getPeso() {
return peso;
}
//calcular pago:
public double precioFinal(){
//Variables:
double monto = 0;
//Creamos un switch para que determine el tipo de consumo electrico
//(si es tipo 1 al monto se le suma 100, si es tipo 4 se le suma 50):
switch (consumoElectrico) {
case 1:
monto += 100;
break;
case 2:
monto += 80;
break;
case 3:
monto += 60;
break;
case 4:
monto += 50;
break;
}
//Creamos el metodo if, el cual permitira que identifiquemos que digitos
//son de "Peso". Ademas, con el if calcularemos el monto del peso segun
//la tabla "Peso del aparato"
if (peso >= 0 && peso <= 19) {
monto += 10;
} else if (peso == 20 && peso <= 49) {
monto += 50;
} else if (peso == 50 && peso <= 79) {
monto += 80;
}else if (peso > 79) {
monto += 100;
}
//Creamos un return, donde regresara el valor del precio base y lo sumara
//con el monto calculado de acuerdo a lo establecido en el ejercicio.
return precioBase + monto;
}
//Mostramos los datos a recibir:
public abstract void mostrar();
}
Clase Lavadora
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
package Tienda;
public class Lavadora extends Electrodomesticos{
//Atributos:
private int cargaLavadora = 5;
//Constructor:
public Lavadora(int carLavadora, double pre, int consu, int pe) {
super(pre, consu, pe);
cargaLavadora = carLavadora;
}
//Metodo que muestre los datos:
public void mostrar(){
System.out.println("-------------------------------------");
System.out.println("Tipo de Electrodomestico (1:Lavadora)");
System.out.println("Precio Base: " + getPrecioBase());
System.out.println("Consumo Electrico: " + getConsumoElectrico());
System.out.println("Peso: " + getPeso() + "Kg");
System.out.println("Carga: " + cargaLavadora + "Kg");
System.out.println("Precio final: " + precioFinal() + " Bs.S");
System.out.println();
}
//calcular pago:
public double precioFinal(){
//Variables: Invocamos el método precioFinal de la calse Electrodomestico
double monto = super.precioFinal();
//Creamos el condicional if:
if (cargaLavadora > 30 ) {
monto += 50;
}
return monto;
}
}
Clase Televisor
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
package Tienda;
public class Televisor extends Electrodomesticos {
//Atributos:
private int tamañoPantalla;
//Contructor:
public Televisor(int tam, double pre, int consu, int pe) {
super(pre, consu, pe);
tamañoPantalla = tam;
}
//Metodo que muestre los datos:
public void mostrar(){
System.out.println("-------------------------------------");
System.out.println("Tipo de Electrodomestico (2:Televisor)");
System.out.println("Precio Base: " + getPrecioBase());
System.out.println("Consumo Electrico: " + getConsumoElectrico());
System.out.println("Peso: " + getPeso() + "Kg");
System.out.println("Tamaño: " + tamañoPantalla + " Pulgadas");
System.out.println("Precio final: " + precioFinal() + " Bs.S");
System.out.println();
}
public double precioFinal(){
//Variables: Invocamos el método precioFinal de la calse Electrodomestico
double monto = super.precioFinal();
//Condicional if:
if (tamañoPantalla >= 40 ) {
monto += precioBase*0.3;
}
return monto;
}
}
Clase Apoyo
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
package Tienda;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Apoyo {
public static int tamArchivo(ArrayList<Electrodomesticos> elec) throws IOException{
//Instanciamos;
Scanner sc = new Scanner(new File("Tienda.txt"));
//Variables:
String arch;
int cantArch = 0;
//Metodo while:
while (sc.hasNextLine()) {
arch = sc.nextLine();
cantArch++;
}
return cantArch;
}
public static void leerArchivo(ArrayList<Electrodomesticos> elec)throws IOException{
//Instanciamos:
Scanner sc = new Scanner(new File("Tienda.txt"));
Electrodomesticos electrodomestico = null;
int t;
//Metodo while:
while (sc.hasNextLine()) {
t = sc.nextInt();
//Creamos el condicional if:
if (t == 1) {
electrodomestico = new Lavadora(sc.nextInt(), sc.nextDouble(), sc.nextInt(), sc.nextInt());
} else if (t == 2) {
electrodomestico = new Televisor(sc.nextInt(), sc.nextDouble(), sc.nextInt(), sc.nextInt());
}
elec.add(electrodomestico);
}
sc.close();
}
public static void mostrar(ArrayList<Electrodomesticos> elec){
//Creamos el ciclo for:
for (int i = 0; i < elec.size(); i++) {
elec.get(i).mostrar();
}
}
//Creamos el menu de inicio:
public static int menu() {
int opc = 0;
Scanner teclado = new Scanner(System.in);
System.out.println("Menu");
System.out.println("1-Leer archivo Tienda");
System.out.println("2-Mostrar Electrodomesticos");
System.out.println("3-Terminar");
System.out.print("Escoja una opcion: ");
opc = teclado.nextInt();
System.out.println("");
return opc;
}
}
Clase Principal
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
package Tienda;
import java.io.IOException;
import java.util.*;
public class Principal {
public static void main(String[] args) throws IOException{
//Creamos una nueva lista:
ArrayList<Electrodomesticos> electrodomestic = new ArrayList<>(0);
//Variables:
int opc = 0, tam = 0;
tam = Apoyo.tamArchivo(electrodomestic);
//Metodo while:
while(opc != 3) {
opc = Apoyo.menu();
switch(opc) {
case 1:
Apoyo.leerArchivo(electrodomestic);
break;
case 2:
Apoyo.mostrar(electrodomestic);
break;
}
}
}
}
El problema que noto en mi código es que al leer el archivo de texto Tienda, al mostrar los resultados el programa identifica mal el Precio Base, el Consumo Energético y la Carga/Tamaño.
Por ejemplo, el Precio Base debería ser 100, el Consumo Energético ser tipo 2 y la Carga ser 150. Ademas, sospecho que el precio final no es el correcto.
https://ibb.co/rQSCkhK
Les dejo el archivo en Java con el texto. Si pueden decirme en que me estoy equivocando se los agradecería full.
- Tienda-de-Electrodomesticos.rar(21,2 KB)
- Imagenes.rar(30,1 KB)
Valora esta pregunta


0