Java - Problema con la POO AYUDA

 
Vista:
sin imagen de perfil
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con la POO AYUDA

Publicado por Luis David (11 intervenciones) el 25/01/2018 19:24:19
Estoy realizando un pequeño ejercicio que a primera vista no es difícil o no debría serlo. pero me estan surjiendo problemas ya que a la hora de comparar los valores siempre recibo un false y no se a que es debido.

El ejercicio en sí es el siguiente:

Captura

He creado un archivo que se refiere a la clase con el objeto, sus atributos y demás:

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
84
85
86
87
88
89
90
91
92
93
94
95
96
public class PalabraLeida {
 
	private String valor;
 
	public void setValor(String valor) {
		this.valor = valor;
	}
 
	public int NumeroDeLetras(){
		int letras = valor.length();
		return letras;
	}
 
	public boolean EmpiezaPorVocal() {
 
		if (valor.charAt(0) == ('a'|'e'|'i'|'o'|'u')) {
 
			return true;
 
		}else
 
		return false;
	}
 
	public boolean AcabaPorVocal() {
 
 
		char l = valor.charAt(valor.length()-1);
 
		boolean AcabaVocal = false;
 
		if (l == ('a' | 'e' | 'i' | 'o' | 'u')) {
			AcabaVocal = true;
		}
 
		return AcabaVocal;
 
	}
 
	public int NumeroVocales() {
 
		char l = 0;
		int N_vocales = 0;
 
		for (int i = 0; i < valor.length(); i++) {
 
			l = valor.charAt(i);
 
		}
 
		if (l == ('a' | 'e' | 'i' | 'o' | 'u'
				| 'á' | 'é' | 'í' | 'ó' | 'ú')) {
 
 
			N_vocales ++;
 
		}
 
		return N_vocales;
	}
 
	public boolean ContieneH() {
 
 
	char l;
    boolean contieneH = false;
 
    for (int i = 0; i < valor.length(); i++) {
 
		l = valor.charAt(i);
 
 
			if (l == ('h' | 'H')) {
 
			contieneH = true;
 
			}
	    }
 
    return contieneH;
   }
 
	public boolean EsPalindroma() {
 
		String PalabraAlReves = null;
 
		for (int i = valor.length()-1; i > 0; i--) {
 
 
			PalabraAlReves = PalabraAlReves +
					valor.charAt(i);;
 
		}
		return valor == PalabraAlReves;
	}
}

Y luego por otra parte tengo el archivo de test para crear el objeto y llamar a los métodos:

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
import java.util.Scanner;
 
public class TestPalabraLeida {
 
	public static void main(String[] args) {
 
		PalabraLeida PalabraLeida = new PalabraLeida();
 
		Scanner sc = new Scanner(System.in);
 
		System.out.println("Escribe una palabra: ");
		String Palabra = sc.nextLine();
 
		PalabraLeida.setValor(Palabra);
 
		System.out.println("Tiene " + PalabraLeida.NumeroDeLetras() + " letras");
 
		System.out.println("¿Empieza por vocal?: " + PalabraLeida.EmpiezaPorVocal());
 
		System.out.println("¿Acaba por vocal?: " + PalabraLeida.AcabaPorVocal());
 
		System.out.println("La palabra tiene " + PalabraLeida.NumeroVocales() + " vocales");
 
		System.out.println("¿Contiene h?:" + PalabraLeida.ContieneH());
 
		System.out.println("¿Es palindroma?: " + PalabraLeida.EsPalindroma());
	}
 
}

Mi problema como ya he dicho es que no se como solucionar que siempre me devuelva los boolean con false. Muchas gracias de antemano!!
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
sin imagen de perfil
Val: 144
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con la POO AYUDA

Publicado por Thanatos (97 intervenciones) el 25/01/2018 22:45:21
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
public class PalabraLeida {
    private String valor;
 
    public void setValor(String valor) {
        this.valor = valor;
    }
 
    public int numeroDeLetras() {
        return valor.length();
    }
 
    public boolean empiezaPorVocal() {
        return esVocal(valor.charAt(0));
    }
 
    public boolean acabaEnVocal() {
        return esVocal(valor.charAt(valor.length() - 1));
    }
 
    public int numeroDeVocales() {
        int nVocales = 0;
 
        for (int i = 0; i < valor.length(); ++i) {
            if (esVocal(valor.charAt(i))) {
                ++nVocales;
            }
        }
        return nVocales;
    }
 
    public boolean contieneH() {
        for (int i = 0; i < valor.length(); i++) {
            if (Character.toLowerCase(valor.charAt(i)) == 'h') {
                return true;
            }
        }
        return false;
    }
 
    public boolean esUnPalindromo() {
        String palabraAlReves = "";
 
        for (int i = valor.length() - 1; i >= 0; --i) {
            palabraAlReves += valor.charAt(i);
        }
        return valor.equals(palabraAlReves);
    }
 
    public boolean sonIguales(String palabra) {
        return valor.equalsIgnoreCase(palabra);
    }
 
    private boolean esVocal(char ch) {
        ch = Character.toLowerCase(ch);
        return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' ||
               ch == 'á' || ch == 'é' || ch == 'í' || ch == 'ó' || ch == 'ú';
    }
}


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
import java.util.Scanner;
 
class TestPalabraLeida {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        PalabraLeida obj = new PalabraLeida();
 
        System.out.print("Escribe una palabra: ");
        String palabra = sc.nextLine();
        sc.close();
 
        obj.setValor(palabra);
 
        System.out.println(
            "# de letras --------> " + obj.numeroDeLetras()  + "\n" +
            "Empieza por vocal --> " + obj.empiezaPorVocal() + "\n" +
            "Acaba en vocal -----> " + obj.acabaEnVocal()    + "\n" +
            "# de vocales -------> " + obj.numeroDeVocales() + "\n" +
            "Contiene h ---------> " + obj.contieneH()       + "\n" +
            "Es palíndromo ------> " + obj.esUnPalindromo()  + "\n"
        );
    }
 
}
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: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con la POO AYUDA

Publicado por Nico (14 intervenciones) el 25/01/2018 22:47:03
En el método Empieza por vocal igual tb deberías incluir las mayúsculas, 'A'...
En el método número de vocales creo que el if debería ir dentro del bucle.
Los otros creo los veo bien, a vista pk ahora no lo puedo probar en el pc.
Prueba eso.
Un saludo
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