Java - Problemas con String - Eclipse

 
Vista:
sin imagen de perfil

Problemas con String - Eclipse

Publicado por Victor (1 intervención) el 13/04/2018 01:35:58
Buenas, tengo un problema, estoy apenas aprendiendo a programar en eclipse y he tenido un pequeño problema que es que el programa termina cuando me pide el color de la etiqueta he utilizado el comando "color=teclado.nextLine();" no me deja escribir si quiera el valor que le quieor dar a color
sin resultado aparente pero cuando cambio ese comando por "teclado.next();" puedo escribir y darle el valor de "rojo" pero el programa termina ahi y no aplica el "if"


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
import java.util.Scanner;
 
public class Descuentos {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner teclado=new Scanner (System.in);
 
		String roja=" ",verde=" ",blanca=" ",amarilla=" ",azul=" ",negra=" ",color=" ";
		double p=0,pt1=0,pt2=0;
 
		System.out.println("Dame el precio del producto");
		p=teclado.nextDouble();
		System.out.println("Dame el color de la etiqueta");
		color=teclado.nextLine(); //AQUI ES DONDE SE QUEDA <---------------------------------
 
		if(color==roja) {
			pt1=(p*0.5);
			pt2=p-pt1;
			System.out.println("El descuento es del 50%");
			System.out.println("Se tiene que pagar " +p);
			System.out.println("La canatidad descontada es de " +pt1);
			System.out.println("El precio total añadiendo descuento es " +pt2);
 
		}
		else
		{
		if (color==verde){
			pt1=(p*0.6);
			pt2=p-pt1;
			System.out.println("El descuento es del 60%");
			System.out.println("Se tiene que pagar " +p);
			System.out.println("La canatidad descontada es de " +pt1);
			System.out.println("El precio total añadiendo descuento es " +pt2);
 
 
		}
		else {
		if (color==blanca){
 
			pt1=(p*0.7);
			pt2=p-pt1;
			System.out.println("El descuento es del 70%");
			System.out.println("Se tiene que pagar " +p);
			System.out.println("La canatidad descontada es de " +pt1);
			System.out.println("El precio total añadiendo descuento es " +pt2);
		}
		else {
			if (color==amarilla){
				pt1=(p*0.8);
				pt2=p-pt1;
				System.out.println("El descuento es del 80%");
				System.out.println("Se tiene que pagar " +p);
				System.out.println("La canatidad descontada es de " +pt1);
				System.out.println("El precio total añadiendo descuento es " +pt2);
 
			}
			else {
				if (color==azul){
					pt1=(p*0.9);
					pt2=p-pt1;
					System.out.println("El descuento es del 90%");
					System.out.println("Se tiene que pagar " +p);
					System.out.println("La canatidad descontada es de " +pt1);
					System.out.println("El precio total añadiendo descuento es " +pt2);
				}
				else {
				if (color==negra){
					pt1=(p*1);
					pt2=p-pt1;
					System.out.println("El descuento es del 100%");
					System.out.println("Se tiene que pagar " +p);
					System.out.println("La canatidad descontada es de " +pt1);
					System.out.println("El precio total añadiendo descuento es " +pt2);
 
				}
				}
			}
		}
		}
		}
	}
}

Esto es lo que me da el resultado

Dame el precio del producto
120
Dame el color de la etiqueta


He buscado soluciones pero no encuentro nada al respecto, espero encontrar la solucion aqui
Gracias.
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 Oliver
Val: 189
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problemas con String - Eclipse

Publicado por Oliver (67 intervenciones) el 13/04/2018 04:32:46
Buenas noches hermano , alli te coloque la solucion , debes comparar tu algoritmo con este y veras los problemas , sin embargo te nombra algunos ,tales como : debes tabular tu codigo para que tenga mas claridad le das click derecho sobre el algoritmo y le das a formato y el solo se ajusta , cuando vas a comprar un String debes hacerlo con el metodo .equals y no con operadores ==, color es la variable y el tipo de color es el valor de la variable , por lo que no tenias que declarar todos los colores como variables .... bueno esas son unas de las cosas que logre ver de todas maneras el algoritmo ya funciona , ah y otra cosa la estructura condicional if se le añade else if y no else { y depues otra vez el if{....particularmente yo hubiese usado un Switch case y habria facilitado mas la tarea , no quise colocarlo para no alterar mucho tu codigo espero te sirva de ayuda , recuerda valorar mi respuesta y disces que tal te funciono

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
import java.util.Scanner;
 
public class Descuentos {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner teclado=new Scanner (System.in);
 
        String color =" ";
        double p=0,pt1=0,pt2=0;
 
        System.out.println("Dame el precio del producto");
        p=teclado.nextDouble();
        Scanner entrada=new Scanner (System.in);
        System.out.println("Dame el color de la etiqueta");
        color=entrada.nextLine(); //AQUI ES DONDE SE QUEDA <---------------------------------
 
        if(color.equals("roja")) {
            pt1=(p*0.5);
            pt2=p-pt1;
            System.out.println("El descuento es del 50%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
 
        }
        else if (color.equals("verde")){
            pt1=(p*0.6);
            pt2=p-pt1;
            System.out.println("El descuento es del 60%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
 
        }
        else if (color.equals("blanca")){
 
            pt1=(p*0.7);
            pt2=p-pt1;
            System.out.println("El descuento es del 70%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
        }
        else if (color.equals("amarilla")){
            pt1=(p*0.8);
            pt2=p-pt1;
            System.out.println("El descuento es del 80%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
 
        }
        else if (color.equals("azul")){
            pt1=(p*0.9);
            pt2=p-pt1;
            System.out.println("El descuento es del 90%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
        }
        else if (color.equals("negra")){
            pt1=(p*1);
            pt2=p-pt1;
            System.out.println("El descuento es del 100%");
            System.out.println("Se tiene que pagar " +p);
            System.out.println("La canatidad descontada es de " +pt1);
            System.out.println("El precio total añadiendo descuento es " +pt2);
 
        }
    }
}
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
sin imagen de perfil
Val: 90
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problemas con String - Eclipse

Publicado por Simon (25 intervenciones) el 13/04/2018 17:03:21
El problema que tiene ese codigo es que al llamar a esta funcion: teclado.nextDouble(); el programa no borra el enter de la cola y al entrar en color = teclado.nextLine(); te lo coge y color toma el valor "" por lo que no entra en ningun if posterior. Para esto simplemete tienes que añadir esto:
1
p=teclado.nextDouble();teclado.nextLine();
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