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)); } }
4 Réponses :
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();
Si vous voulez filtrer contre des mots que vous n'aimez pas, vous devrez le coder. 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
Comme l'exemple avec "hi": 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("?");
}
}
@Janrek: Entrée de chaîne = Takeinput (); code> et
TRUCLATEINUT (entrée); code> pourrait fonctionner par exemple.
supposé que vous fournissez des mots non approuvés comme arguments d'entrée
À 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.