Comment puis-je vérifier si un caractère est une voyelle?
Ce code Java est de me donner de la difficulté à:
String word = <Uses an input>
int y = 3;
char z;
do {
z = word.charAt(y);
if (z!='a' || z!='e' || z!='i' || z!='o' || z!='u')) {
for (int i = 0; i==y; i++) {
wordT = wordT + word.charAt(i);
} break;
}
} while(true);
Je veux vérifier si la troisième lettre du mot est un non-voyelle, et si elle est, je veux le retour de la non-voyelle et tous les caractères qui le précède. Si c'est une voyelle, il vérifie la lettre suivante dans la chaîne, si c'est aussi une voyelle puis il vérifie la suivante jusqu'à ce qu'il trouve un non-voyelle.
Exemple:
mot = Jaemeas puis wordT doit = Jaem
Exemple 2:
mot=Jaeoimus puis wordT doit =Jaeoim
Le problème est avec mon if
déclaration, je ne peux pas comprendre comment le faire vérifier toutes les voyelles dans une ligne.
source d'informationauteur KyleMHB
Vous devez vous connecter pour publier un commentaire.
Votre état est viciée. Pensez à la version plus simple
Si
z
est'a'
puis la seconde moitié sera vrai depuisz
n'est pas'e'
(c'est à dire l'ensemble de la condition est vraie), et siz
est'e'
puis la première moitié sera vrai depuisz
n'est pas'a'
(encore une fois, toute condition vraie). Bien sûr, siz
est ni'a'
ni'e'
ensuite, les deux parties vont être vrai. En d'autres termes, votre condition ne sera jamais faux!Vous souhaiterez probablement
&&
s il ya lieu:Ou peut-être:
Propre méthode de vérification pour les voyelles:
Comment sur une approche utilisant les expressions régulières? Si vous utilisez le bon modèle, vous pouvez obtenir les résultats de la Correspondance de l'objet à l'aide de groupes. Dans l'exemple de code ci-dessous l'appel à m.groupe(1) en cas de retour, vous avez de la chaîne que vous êtes à la recherche pour aussi longtemps que il ya une tendance de match.
Juste un peu différent de l'approche qui accomplit le même objectif.
Pour commencer, vous vérifiez si la lettre n'est pas "un" OU "non" OU "pas moi", etc.
Permet de dire que la lettre est je. Ensuite, la lettre n'est pas un, de sorte que renvoie la valeur "True". Ensuite, l'ensemble de l'énoncé est Vrai parce que je != un. Je pense que ce que vous cherchez est ET les états, pas OU.
Une fois que vous faites cela, vous avez besoin de regarder comment faire pour incrémenter y et vérifier à nouveau. Si la première fois que vous obtenez une voyelle, vous voulez voir si le caractère suivant est une voyelle trop, ou pas. Ce ne contrôle que le caractère à la position y=3.
En fait, il ya beaucoup plus efficace des moyens de le vérifier, mais puisque vous avez demandé quel est le problème avec le vôtre, je peux dire que le problème est que vous avez à les modifier OU de les opérateurs ET les opérateurs. Avec votre instruction if, il sera toujours vrai.
voici ma réponse.
J'ai déclaré un char[] constante pour les VOYELLES, puis mis en œuvre une méthode qui vérifie si un char est une voyelle ou pas (renvoyant une valeur booléenne). Dans ma méthode main, je suis la déclaration d'une chaîne et de le convertir en un tableau de caractères, de sorte que je puisse passer l'indice de la char tableau en paramètre de ma isVowel méthode: