1
votes

Comment supprimer le dernier caractère d'une chaîne à chaque fois qu'elle est imprimée à l'aide de boucles imbriquées

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


0 commentaires

3 Réponses :


0
votes

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.


0 commentaires

0
votes

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.


0 commentaires

0
votes

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();          
       }       
   }
 }


0 commentaires