-1
votes

Split ("") String de texte utilisateur et imprimer la première lettre de chaque mot approuvé

L'utilisateur est censé entrer plusieurs mots (sans égards inférieur / majuscule) avec espace entre entre -ges, ce texte sera ensuite traduit en initiales sans aucun espace inclus. Cependant, je veux seulement les initiales des mots que j'approuve, si quelque chose que ces mots, l'impression dit plutôt "?" au lieu d'imprimer le premier alphabet d'un mot. EQ: "Hello Hello Bonjour" sortira comme suit: "Hhh", mais "Bonjour bonjour Bonjour" ou "Bonjour. Bonjour" aura lieu au lieu de "H? H".

J'ai réussi à le faire imprimer les initiales sans les espaces. Mais je ne peux pas comprendre comment ajouter une condition dans laquelle le programme vérifierait d'abord si l'entrée contient des mots ou des signes / symboles non approuvés, ou non afin de remplacer cela non approuvé ou non avec une marque d'interrogation au lieu de simplement aller de l'avant et imprimer la première / signe. J'ai essayé de placer la boucle à l'intérieur d'une boucle If-else et d'utiliser une boucle de commutation (), mais ils n'interagissent pas correctement avec la boucle de la boucle. P>

public static void main (String []args) {

    Scanner keyboard = new Scanner (System.in);
    System.out.println("Enter your words: ");

    String input = keyboard.nextLine().toUpperCase();
    String str = input;
    String[] parts = str.split(" ");

    System.out.print("The initials: ");
    for (String i : parts) {
        System.out.print(i.charAt(0));
    }
}


1 commentaires

À l'intérieur de la boucle pour la boucle, vous pouvez ajouter "si (condition)" {system.out.print (i.charat (0)); } else {ne rien faire}, je suggérerais que la condition vérifie si vos "parties" existent dans une liste de mots approuvés.


4 Réponses :


0
votes

Vous devez créer un ensemble de mots approuvés, puis vérifier si chaque mot, saisi par l'utilisateur, fait une partie de cet ensemble.

quelque chose comme ceci: p>

...
Set<String> approved_words = new TreeSet<>();
approved_words.add("HELLO");
approved_words.add("GOODBYE");
...
for (String i : parts) {
  if (approved_words.contains(i))
    System.out.print(i.charAt(0));
  else
    System.out.print('?');
}
System.out.println();


0 commentaires

0
votes

Si vous voulez filtrer contre des mots que vous n'aimez pas, vous devrez le coder.
Comme l'exemple avec "hi": xxx pré>

bien sûr dans la vie réelle, vous souhaitez une telle comparaison sur une collection, de préférence quelque chose de rapide, comme un hashset code>: P >

public static void main (String []args) {

    Set<String> bannedWords=new HashSet<String>(Arrays.asList("HI","."));

    Scanner keyboard = new Scanner (System.in);
    System.out.println("Enter your words: ");

    String input = keyboard.nextLine().toUpperCase();
    String str = input;
    String[] parts = str.split(" ");

    System.out.print("The initials: ");
    for (String i : parts) {
        if(!bannerWords.contains(i))
          System.out.print(i.charAt(0));
        else
          System.out.print("?");
    }
}


1 commentaires

@Janrek: Entrée de chaîne = Takeinput (); et TRUCLATEINUT (entrée); pourrait fonctionner par exemple.




0
votes

supposé que vous fournissez des mots non approuvés comme arguments d'entrée xxx


0 commentaires