Autor Tema: Código de proyecto Java tienda de computadores opciones elegir y calcular precio  (Leído 2615 veces)

JoZe

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, estoy haciendo este ejercicio sobre una tienda con opciones en Java y soy nuevo en esto de programar.

El programa no suma ni da suma final de las opciones elegidas. Agradecería cualquier ayuda. Gracias.

Citar
Crea una aplicación con Java a ejecutar en la consola que permita a un usuario seleccionar un ordenador, configurándolo en función de las distintas opciones que se le ofrece, para obtener al final, como resultado, una relación de todo lo elegido y el importe final.

Respecto a las opciones disponibles, se deberán ofrecer las siguientes:

Tipo de ordenador:
Sobremesa (500€)
Portatil (600€)
Procesador:
i3 (precio base)
i5 (200€)
i7 (400€)
Tipo de disco duro:
HDD (precio base)
SSD (300€)
Capacidad de disco duro:
120 GB (precio base)
250 GB (200€)
500 GB (300€)
Capacidad memoria RAM
08 GB (precio base)
16 GB (200€)


Código

Código: [Seleccionar]
package javaapplication4;
import java.util.Scanner;
public class JavaApplication4 {
public static void main(String[] args) {
Scanner pc= new Scanner(System.in);
String user= pc.nextLine();
String option1="";
String option2="";
String option3="";
System.out.println("Indica tipo de ordenador: Sobremesa(500€) o Portatil(600€)");
user= pc.nextLine();
option1="Sobremesa";

option2="Portatil";
int precio=0;
if (user.equals(option1)){
System.out.println("Ha escogido ordenador de sobremesa");
precio+=500; } if (user.equals(option2)){
System.out.println("Ha escogido ordenador portatil");
precio+=600; }
System.out.println("indica tipo de procesador: i3(0€) / i5(200€) / i7(300€)");
user= pc.nextLine(); option1="i3"; option2="i5"; option3="i7";
if (user.equals(option1)){
System.out.println("Ha escogido procesador i3");
} if (user.equals(option2)){
System.out.println("Ha escogido procesador i5");
precio+=200; }
if (user.equals(option3)){
System.out.println("Ha escogido procesador i7");
precio+=300; }
System.out.println("indica tipo de disco duro: Disco duro mecánico(0€) o Disco duro sólido/ (300€)");
user= pc.nextLine(); option1="Disco duro mecánico"; option2="Disco duro sólido";
if (user.equals(option1)){
System.out.println("Ha escogido Disco duro mecánico");
} if (user.equals(option2)){
System.out.println("Ha escogido Disco duro sólido");
precio+=300; }
System.out.println("indica capacidad del disco duro: 250gb(0€) / 500gb (200€) / 750gb (300€)");
user= pc.nextLine(); option1="250gb"; option2="500gb"; option3="750gb";
if (user.equals(option1)){
System.out.println("Ha escogido usted disco duro de 250gb");
} if (user.equals(option2)){
System.out.println("Ha escogido usted disco duro de 500gb");
 precio+=200; }
if (user.equals(option3)){
System.out.println("Ha escogido usted disco duro de 750gb");
precio+=300; }
System.out.println("indica tipo memoria ram 8gb(0€): 16(200€)"); user= pc.nextLine(); option1="8gb"; option2="16gb";
if (user.equals(option1)){
System.out.println("Ha escogido 8gb");
} if (user.equals(option2)){
System.out.println("Ha escogido 16gb");
precio+=200; }
System.out.println("El precio final es "+precio+" EUROS"); } }

« Última modificación: 14 de Agosto 2020, 19:34 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:tienda de opciones en java
« Respuesta #1 en: 16 de Diciembre 2019, 00:53 »
Hola. He probado el programa y sí funciona. Sin embargo, he hecho unos ligeros cambios para que sea más legible al ojo humano y ahorrar también unas líneas.

Lo que he cambiado es que, para comparar cadenas String, no es necesario que uses variables a las que les asignas los String y luego comparas. No es necesario, puedes comparar directamente las cadenas String, no hace falta meterlas en variables.

Y para declarar la variable user, donde vas leyendo lo que teclea el usuario, no es necesario comenzar asignándole un valor mediante nextLine() si en ese momento no le estas preguntando nada el usuario. Lo declaras como

 String user;

 y ya está, nada más.

Por lo demás, insisto, el programa parece funcionar bien.

Sí sería bueno plantear las opciones al usuario de otra forma más sencilla para él.

Es decir, para que tu programa funcione, por ejemplo el usuario ha de ser capaz de escribir correctamente opciones como:

"Disco duro sólido"

No puede equivocarse en la D mayúscula, no puede equivocarse en los espacios en blanco y no puede fallar al ponerle tilde a la palabra sólido.

Eso es esperar demasiada eficiencia por parte del usuario je je..., es mejor facilitarle las cosas.

Por ejemplo, puedes pedirle que teclee números en lugar de palabras enteras.

En lugar de esperar que teclee bien estos términos y confiar que tus comparaciones tengan éxito:

Código: [Seleccionar]
System.out.println("indica tipo de disco duro: Disco duro mecánico(0€) o Disco duro sólido/ (300€)");
user= pc.nextLine();
if (user.equals("Disco duro mecánico")){
System.out.println("Ha escogido Disco duro mecánico");
}
if (user.equals("Disco duro sólido")){
System.out.println("Ha escogido Disco duro sólido");
precio+=300;
}

Se lo facilitas pidiendo opciones numeradas:

Código: [Seleccionar]
System.out.println("indica tipo de disco duro: (1)Disco duro mecánico(0€) o (2)Disco duro sólido/ (300€)");
System.out.print("Elija entre valores 1 y 2: ");
user= pc.nextLine();
if (user.equals("1")){
System.out.println("Ha escogido Disco duro mecánico");
}
if (user.equals("2")){
System.out.println("Ha escogido Disco duro sólido");
precio+=300;
}

Así reduces las posibilidades de que el usuario se equivoque. Aún así, no se está contemplando que ocurre si el usuario elige opciones no existentes.

Pero esto ya lo irás aprendiendo más adelante, cuando aprendas a usar bucles y la instrucción switch te serás más fácil pedirle opciones al usuario, comprobar si ha escogido opciones válidas y como reaccionar si no lo ha hecho.

Te dejo, el código tal cuál yo lo tengo tras esos ligeros cambios estéticos que mencioné al principio.

Código: [Seleccionar]
import java.util.Scanner;

public class JavaApplication4 {
public static void main(String[] args) {
Scanner pc= new Scanner(System.in);
String user;
int precio=0;

System.out.println("Indica tipo de ordenador: Sobremesa(500€) o Portatil(600€)");
user= pc.nextLine();

if (user.equals("Sobremesa")) {
System.out.println("Ha escogido ordenador de sobremesa");
precio+=500;
}

if (user.equals("Portatil")){
System.out.println("Ha escogido ordenador portatil");
precio+=600;
}

System.out.println("indica tipo de procesador: i3(0€) / i5(200€) / i7(300€)");
user= pc.nextLine();
if (user.equals("i3")){
System.out.println("Ha escogido procesador i3");
}
if (user.equals("i5")){
System.out.println("Ha escogido procesador i5");
precio+=200;
}
if (user.equals("i7")){
System.out.println("Ha escogido procesador i7");
precio+=300;
}

System.out.println("indica tipo de disco duro: Disco duro mecánico(0€) o Disco duro sólido/ (300€)");
user= pc.nextLine();
if (user.equals("Disco duro mecánico")){
System.out.println("Ha escogido Disco duro mecánico");
}
if (user.equals("Disco duro sólido")){
System.out.println("Ha escogido Disco duro sólido");
precio+=300;
}

System.out.println("indica capacidad del disco duro: 250gb(0€) / 500gb (200€) / 750gb (300€)");
user= pc.nextLine();
if (user.equals("250gb")){
System.out.println("Ha escogido usted disco duro de 250gb");
}
if (user.equals("500gb")){
System.out.println("Ha escogido usted disco duro de 500gb");
precio+=200;
}
if (user.equals("750gb")){
System.out.println("Ha escogido usted disco duro de 750gb");
precio+=300;
}

System.out.println("indica tipo memoria ram 8gb(0€): 16gb(200€)");
user= pc.nextLine();
if (user.equals("8gb")){
System.out.println("Ha escogido 8gb");
}
if (user.equals("16gb")){
System.out.println("Ha escogido 16gb");
precio+=200;
}

System.out.println("El precio final es "+precio+" EUROS");
pc.close();
}
}

Y este resultado me da en pantalla:

Citar
Indica tipo de ordenador: Sobremesa(500€) o Portatil(600€)
Sobremesa
Ha escogido ordenador de sobremesa
indica tipo de procesador: i3(0€) / i5(200€) / i7(300€)
i5
Ha escogido procesador i5
indica tipo de disco duro: Disco duro mecánico(0€) o Disco duro sólido/ (300€)
Disco duro sólido
Ha escogido Disco duro sólido
indica capacidad del disco duro: 250gb(0€) / 500gb (200€) / 750gb (300€)
500gb
Ha escogido usted disco duro de 500gb
indica tipo memoria ram 8gb(0€): 16(200€)
16gb
Ha escogido 16gb
El precio final es 1400 EUROS
« Última modificación: 14 de Agosto 2020, 19:36 por Ogramar »
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".