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:

He creado un archivo que se refiere a la clase con el objeto, sus atributos y demás:
Y luego por otra parte tengo el archivo de test para crear el objeto y llamar a los métodos:
Mi problema como ya he dicho es que no se como solucionar que siempre me devuelva los boolean con false. Muchas gracias de antemano!!
El ejercicio en sí es el siguiente:

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


0