Donc, je viens d'apprendre les boucles imbriquées dans ma classe et on nous a donné un programme et je n'arrive pas à comprendre. Le programme invite l'utilisateur à entrer un mot et la sortie doit imprimer le mot combien de fois le numéro de la lettre se trouve sur une ligne différente, et le dernier caractère du mot doit être supprimé à chaque fois que le mot est imprimé. C'est ce que j'ai en ce moment. Je n'ai pu que le faire imprimer le mot entier et combien de fois il devrait être imprimé.
import java.util.*; public class MyClass { public static void main(String args[]) { Scanner kbreader = new Scanner (System.in); System.out.print("Enter a word: "); String word = kbreader.nextLine(); for ( int k = word.length(); k > 0; k--) { for (int m = 0; m <= word.length()-1; m++) { System.out.print(word.charAt(m)); } System.out.println(); } } }
Le programme devrait imprimer quelque chose comme ceci:
Entrez un mot: bonjour
bonjour
l'enfer
hel
il
h
mais mon programme affiche ceci:
bonjour
bonjour
bonjour
bonjour
3 Réponses :
La fonction de sous-chaîne est ce que vous recherchez. Il se trouve (probablement) dans tous les langages de programmation.
Voici un exemple fonctionnel: https://www.w3schools.com/jsref/jsref_substring .asp
Également important si vous utilisez un nombre négatif pour les paramètres, il sous-tendra à partir de la «fin» de la chaîne au lieu du devant, ou il comptera à rebours au lieu d'avancer.
Vous avez un compteur dans votre boucle, vous devriez donc pouvoir facilement jouer et le faire fonctionner avec cette fonction.
Vous pouvez essayer:
IntStream.range(0, length).mapToObj(i -> word.substring(0, length - i)).forEach(System.out::println);
Ou
int length = word.length(); IntStream.range(0, length).forEach(i -> System.out.println(word.substring(0, length - i)));
Il utilise java stream
et très concis.
Vous venez de faire une petite erreur. Vous remarquerez probablement que vous n'avez pas utilisé le k
pour quoi que ce soit, donc vous faisiez simplement la même tâche k
fois. Remplacez simplement m par
m
import java.util.*;
public class MyClass {
public static void main(String args[]) {
Scanner kbreader = new Scanner (System.in);
System.out.print("Enter a word: ");
String word = kbreader.nextLine();
for ( int k = word.length(); k > 0; k--)
{
for (int m = 0; m < word.length()-k; m++)
{
System.out.print(word.charAt(m));
}
System.out.println();
}
}
}