J'ai juste une question. J'ai un travail de laboratoire pratique pour ma classe et j'essaie d'obtenir le nombre d'occurrences de la lettre «a» à partir d'une entrée utilisateur. Si je tape: "pommes pommes pommes", la sortie imprimera la chaîne utilisateur comme vous le souhaitez, mais à la fin, au lieu de me donner un chiffre 3, cela donne 123 ... Je veux la sortie: "pommes pommes pommes3" pas "pommes apples apples123 "merci d'avance pour l'aide.
Voici mon code:
import java.util.Scanner;
public class labnextLine {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input;
int count = 0;
System.out.print("Enter a string:");
input = in.nextLine();
System.out.print(input);
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) == 'a') {
count = count + 1;
System.out.print(count);
}
}
}
}
4 Réponses :
Pour cela, vous voudrez simplement imprimer votre count en dehors de la boucle, cela donnera la sortie souhaitée.
Une autre méthode que vous voudrez peut-être essayer, si vous utilisez Java 8:
long count = input.chars().filter(ch -> ch == 'a').count(); System.out.print(count);
Déplacez System.out.print (count); hors de la boucle comme indiqué ci-dessous:
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) == 'a') {
count = count + 1;
}
}
System.out.print(count);
Puisque vous l'avez mis dans la boucle, il obtient exécuté à chaque itération de la boucle. Lorsque vous le déplacez après le corps de la boucle, il ne sera appelé qu'une seule fois après la fin de la boucle.
Il semble que votre System.out.print (count); soit dans la boucle for, conduisant ainsi le programme à afficher le nombre à chaque itération.
Voici le code correct.
Vous pouvez voir comment nous avons déplacé System.out.print (count); à l'extérieur, juste en dessous, le pour boucle.
import java.util.Scanner;
public class labnextLine {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input;
int count = 0;
System.out.print("Enter a string:");
input = in.nextLine();
System.out.print(input);
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) == 'a') {
count = count + 1;
}
}
System.out.print(count);
}
}
Vous avez reçu plusieurs bonnes réponses. Et le point clé était de sortir l'instruction print de la boucle.
Voici une autre façon de compter une lettre particulière.
[^ a] dit correspondre à tout caractère autre qu'un a . replaceAll (arg1, arg2) - remplace toutes les occurrences de l'expression correspondante dans la chaîne arg1 par la chaîne arg2 . 3
Pour pommes pommes pommes ceci imprime
System.out.print("Enter a string:");
input = in.nextLine();
System.out.print(input);
// effectively remove all but the letter a from the string and get the
// resulting length.
int count = input.replaceAll("[^a]","").length();
System.out.println(count);
Imprimez le
countaprès la boucle lorsque vous avez terminé le traitement de la chaîne entière; utilisezSystem.out.printlnpour éviter les dégâts sur la même ligne.