Ce programme devrait prendre une chaîne, vérifier si chaque lettre est une voyelle et modifier les voyelles en soulignement. Par exemple, si je saisis J'ai déclaré une matrice pour conserver les voyelles, une variable code> NewsTR code> qui contiendra la chaîne mise à jour et je suis en boucle via la chaîne, en comparant chaque lettre à l'aide de quelques code> il doit produire
s_m _ code>. C'est un exercice de programmation simple que je ressens que je devrais pouvoir faire. Cependant, je suis véritablement percuté et je ne peux pas dire ce que je fais mal.
Charat () < / Code> Pour vérifier si c'est dans le
VOWELLES CODE> Array. Si c'est le cas, j'ajoute
_ code> à la chaîne mise à jour, et je garde la lettre originale si ce n'est pas le cas. La sortie finale est fausse, qu'est-ce que je fais mal? p>
3 Réponses :
for (int x = 0; x < str.length(); x++) { char letter = str.charAt(x); boolean toReplace = false; for (int j = 0; j < vowels.length; j++) { if (letter == vowels[j]) { toReplace = true; break; } } if (toReplace) { newStr = newStr + "_"; } else { newStr = newStr + letter; } }
Ou simplement newstr = str.replaceall ("[aeiou]" "," _ "); code> mais je suppose que vous essayez de le faire comme un exercice et ne cherchez pas une solution unique: - ). Dans ce cas, je recommande vivement d'utiliser StressBuilder pour créer la nouvelle chaîne. Juste pour le bien de vos études :-). Bonne chance.
Ouais, ne peut pas être d'accord plus d'accord! En production est la meilleure idée d'utiliser StressBuilder.
Soyez des articles de la concaténation String en boucle B>!
Ceci est assez simple. Juste itérer sur chaque caractère de la chaîne donnée et remplacer par Soyez l'utilisateur d'utiliser code >. Ceci est immuable strong> en Java, donc pour construire une chaîne finale, vous devez utiliser AS alternative, vous pouvez utiliser Expression régulière em> avec _ code> en cas de voyelle.
Utilisez StringBuilder h3>
stringbuilder code>. P>
utilisation Regularexpression h3>
remplacement () code> méthode de la chaîne code> classe p >
private static final Pattern VOWEL = Pattern.compile("[aeiou]");
public static String replaceVowel(String str) {
return VOWEL.matcher(str).replaceAll("_");
}
Dans votre code, le problème est dans votre "boucle" imbriquée. Je dis cela entre citations parce que cela ne boucle jamais réellement. La première itération Pour résoudre ce problème, vous devez utiliser une approche différente. Vous pouvez créer une chaîne de voyelles telles que "aeiouaeiou" et utiliser Indexof Pour vérifier si le caractère sélectionné est une voyelle. P> j = 0 code> casse immédiatement la boucle car votre lettre est égale à
A code> avec
(lettre == voyelles [0]) code> ou ne pas. Dans les deux cas, vous faites une pause
; code> et ajoute le caractère. Cela signifie que votre boucle peut être réduite à un simple
si-else code> qui vérifie si la lettre est un
a code> et le remplace par
_ code> ou le garde .
public static String omitVowels(String input) {
StringBuilder out = new StringBuilder(input.length());
String vowels = "aeiouAEIOU";
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (vowels.indexOf(c) >= 0) // is vowel if index not negative
out.append('_');
else
out.append(c);
}
return out.toString();
}
On dirait que votre boucle interne (
j code>) exécute un
break code> peu importe le premier test. Donc, il ne vérifiera que un
A code> et rien de plus.
Newstr = lettre + lettre; code> doit être fait une fois si la lettre ne correspond à aucune voyelle (c'est-à-dire après la boucle de la boucle)
Traversez votre code dans votre IDE est idéal pour résoudre de petits problèmes comme celui-ci.
Je pense que la meilleure idée serait d'introduire une méthode comme
isvowel () code> qui renvoie true ou false si son paramètre de caractère est une voyelle. Cela aiderait à nettoyer le code beaucoup et à faire que
si code> est plus facile à comprendre (et à résoudre).
Pas vraiment utile, mais vous avez oublié la voyelle 'Y'.
Il y a beaucoup de façons d'y parvenir. Pourquoi avez-vous besoin de 2 boucles? Vous avez également essayé de déboguer votre code?