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:
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:
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.
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:
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