Affichage

Fermé
halima - Modifié le 13 juin 2017 à 07:57
 Halima - 13 juin 2017 à 14:31
Bonjour,

SVP ,j'aimerai savoir comment on peut afficher le message suivant au clavier sans utiliser system.out.println() .
"mot1,mot2,mot3" avec les virgules sachant que mot1 et mot2 et mots3 sont stocker dans un tableau dynamique.
j ai essayer ce code mais j ai obtenu " mot1,mot2,mot3," :

public String toString(){
  String s="";
  for (Phrase phrase : listeDeMot) {
   s=s+phrase.geMot()+",";
  }
    return s;
 }

d'ou listeDeMot est ArrayList dans lequel les trois mots sont stocker et getMot () retourne le mot.

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
13 juin 2017 à 08:09
Bonjour,

"afficher le message suivant au clavier"
C'est à l'écran que l'on affiche les messages, jamais au clavier...

"sans utiliser system.out.println()"
Bizarre, on pourrait contourner le println, mais un affichage c'est quand même bien System.out qui devra s'en occuper

"j ai obtenu " mot1,mot2,mot3," "
il faudrait rajouter une condition pour détecter les cas limites, mais le plus simple serait de laisser faire Java qui a déjà des méthodes pour ça.

@Override
public String toString() {
    return listeDeMot.stream()
                     .map(Phrase::getMot)
                     .collect(Collectors.joining(","));
}
0
Oui je voudrais dire affichage à l ecran .anyway, j ai pas bien compris ce que vous avez fait ! .map (phrase :: getmot ) .merci d expliquer mieux votre code et qu est ce que vous venez dire par cet opérateur ::
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
13 juin 2017 à 14:17
L'opérateur
::
permet de faire une référence de méthode.

En utilisant la méthode stream() sur ta liste on obtient un Stream<Phrase>
La méthode map des Stream, prends en paramètre une Function<T, R> pour convertir chaque objet T en un objet R.

Dans ton cas, la méthode
Phrase::getMot
étant une Function<Phrase, String> on peut l'utiliser pour passer d'un Stream<Phrase> à un Stream<String>

Ensuite on peut collecter toutes les données du Stream et dans ton cas joindre les String en les séparant par des virgules, grâce aux Collectors.

listeDeMot // List<Phrase>
    .stream() // Stream<Phrase>
    .map(Phrase::getMot) // Stream<String>
    .collect(Collectors.joining(",")); // String

Voir : https://docs.oracle.com/javase/tutorial/collections/streams/index.html

Remarque : en passant par un Stream on peut unifier le développement, par exemple on pourrait faire exactement pareil avec un tableau à la place de ta liste, il faudrait juste utiliser
Arrays.stream(tableauDeMot)
au lieu de
listeDeMot.stream()
.
0
Halima > KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
13 juin 2017 à 14:31
Merci beaucoup (y)
0