J'ai des problèmes avec mon code ci-dessous. Je construis un projet qui oblige l'utilisateur à entrer "This is some \"really\" great. (Text)!?" qui est ensuite converti en THISISSOMEREALLYGREATTEXT et la valeur est passée au paramètre suivant. puis dans ma méthode Obify j'essaye d'ajouter OB devant chaque voyelle AEIOUY mais dans ma fonction il ne le fait pas efficacement, il imprime THISISSOMEREALLYGREATTEXT plusieurs fois et à chaque fois qu'il passe { {X4}} il ajoute OB à la fin quand j'ai besoin d'OB devant chaque voyelle au lieu de juste à la fin. s'il vous plaît, montrez-moi où je vais mal pour que je puisse continuer à progresser. encore une fois merci d'avance et le code en cours de révision est ci-dessous.

import java.util.*;

public class Main {

public static void  main(String[] args) {
    normalizeText();
    obify("THISISSOMEREALLYGREATTEXT" );

}

// Part 1 Normalized Method to convert all letter to uppercase and removing all special characters and placing it into String codey.

public static String normalizeText (){
    Scanner sc = new Scanner( System.in );
    String normText;

    System.out.println("Please input text to encrypt");
    normText = sc.nextLine();

    System.out.println(normText.replaceAll(" ","").replaceAll("[^a-zA-Z ]", "").toUpperCase());


    return normText;


}

//This method will take in the Normalized text and insert a capital O and B in-front of every vowel and return the text
private static String obify (String input) {

    String obifiledInput = input;
    for (int i = 0; i < input.length(); i++) {
        if (input.contains( Character.toString( input.charAt( i ) ) )) {
            obifiledInput = obifiledInput + "OB" + Character.toString( input.charAt( i ) );
        } else {
            obifiledInput = obifiledInput + Character.toString( input.charAt( i ) );
        }
            System.out.println(obifiledInput);
    }
    return obifiledInput;
}
}
0
Billy Atim 27 janv. 2019 à 17:28

3 réponses

Meilleure réponse

En regardant votre fonction obify, je ne vois pas tout à fait où vous vérifiez si Character est une voyelle. Qu'est-ce que le code suivant:

if (input.contains( Character.toString( input.charAt( i ) ) ))

Vérifie si input contient un caractère à une certaine position dans input. Cela ne résout pas tout à fait votre problème de vérification si la lettre est une voyelle. De plus, vous définissez obifiledInput sur input directement sans passer par et en ajoutant le OB si nécessaire. Pour résoudre ces problèmes, vous pouvez essayer mon code ci-dessous:

private static String obify (String input) {
    String obifiledInput = "";
    for (int i = 0; i < input.length(); i++) {
        char temp = input.charAt(i);
        if (char == 'A' || char == 'E' || char == 'I' || char == 'O' || char == 'U') {
            obifiledInput += "OB" + temp;
        } else {
            obifiledInput += "" + temp;
        }
    }
    return obifiledInput;
}

Je pense que vous devriez trouver que cela fonctionne. Il vérifie si le caractère est une voyelle, ["A", "E", "I", "O", "U"]. Ensuite, il ajoute "OB" et le caractère à obifiledInput. Sinon, il ajoute simplement le Character. Enfin, il renvoie le String qui a été "obifié".

0
Ishaan Javali 27 janv. 2019 à 15:25

Faites simplement correspondre input.charAt (i) avec toutes les voyelles, cela devrait fonctionner correctement. Il y a aussi une petite erreur dans votre code, vous avez initialisé oblifiedInput avec input, puis vous ajoutez OB à cette chaîne. Même si votre boucle for était correcte, elle n'aurait toujours pas donné la sortie requise.

private static String obify (String input) {

   String obifiledInput = "";
   char c;
   for (int i = 0; i < input.length(); i++) {
       c=input.charAt(i);
       if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
           obifiledInput +="OB";
       }
       obifiledInput +=c;
   }
   System.out.println(obifiledInput);
   return obifiledInput;
}
0
Akshay Katoch 27 janv. 2019 à 14:53