2017-06-09 3 views
-2

Essayez donc de créer une méthode qui passe par une chaîne et vérifie chaque caractère pour les voyelles.Vérifiez que le prochain caractère est la fin du tableau - java

Cependant, quand il atteint la fin et fait une vérification en avant pour le char. je reçois une chaîne hors de l'exception liée. J'ai essayé d'ajouter un chèque pour les espaces blancs pour l'omnium, mais j'ai quand même l'exception.

for (char i = 0; i < buffer.length; i++) { 
       if (isVowel(key.charAt(i + 1)) && !Character.isWhitespace(key.charAt(i + 1)) { 
       buffer[i] = key.charAt(i); 
       } else { 
        break; 
       } 
      } 
+0

Pourquoi n'utilisez-vous pas les chaînes? Avec les tableaux, vous devez toujours vous souvenir de leurs longueurs et les utiliser pour "savoir" quand vous êtes à la fin du tableau. –

+4

Pourquoi vérifiez-vous 'i + 1' et pas seulement' i'? –

+0

Vous devriez lancer la boucle jusqu'à 'i

Répondre

0

Créer la mémoire tampon pour une taille correcte comme

char[] keyChar = key.toCharArray(); 
char[] buffer = new char[keyChar.length]; //same size 

Ensuite, itérer la clé, pas le tampon

for(int i = 0; i < keyChar.length -1; ++i) 

Et ne vont pas à la fin depuis vous utilisez [i + 1] dans la logique.

Notez que cela va ignorer le dernier caractère, vous devez voir si vous voulez que le dernier caractère ou non dans le tampon. Si oui, vous devrez l'ajouter (sans votre chèque sur le prochain évidemment)

+1

merci! Je viens de séparer la logique du dernier personnage et comment le gérer. – Matchbox2093

-1
for (char i = 0; i < buffer.length-1; i++) { 
      if (isVowel(key.charAt(i + 1)) && !key.charAt(i + 1) && !Character.isWhitespace(key.charAt(i + 1)) { 
      buffer[i] = key.charAt(i); 
      } else { 
       break; 
      } 
     } 
+2

Ne compilera pas pour la même raison que celle indiquée dans les commentaires. –