[JAVA] Sortie FizzBuzz avec flux

introduction

Bonjour. C'est Kecho. ** Utilisez-vous stream? ** ** J'ai appris il y a quelques jours et je suis vraiment dedans. Je joue avec pendant le travail. Cette fois, je sortirai FizzBuzz en utilisant stream.

Essayer

Quoi qu'il en soit, générez de 1 à 100

IntStream.range(1,101);

La raison de la plage, et non de la plage fermée, était consciente des codes courts. (Enfin pas si court)

Créer FizzBuzz à l'aide de mapToObj

IntStream.range(1,101).mapToObj(i->i%3==0&&i%5==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i).forEach(i->System.out.println(i));

Oui, c'est difficile à écrire, et je suis sûr que tout le monde est dur.

i->i%3==0&&i%5==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i

FizzBuzz est implémenté dans cette partie. Il est converti en chaîne de caractères dans l'ordre suivant avec l'opérateur binaire.

  1. Conversion en FizzBuzz si divisible par 3 ou 5
  2. Convertir en Fizz si divisible par 3 3.5 Convertir en Buzz si divisible par 5
  3. Tel quel

Résultat de sortie

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
・ ・ ・

C'est bon.

Essayez de raccourcir

Actuellement, il est de 129 octets, mais il peut être un peu raccourci.

Utiliser la référence de méthode

Vous pouvez omettre l'argument à l'aide d'une référence de méthode.

i->System.out.println(i)Système.out::Il peut être écrit comme println.




```java
IntStream.range(1,101).mapToObj(i->(i%3==0&&i%5==0)?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i).forEach(System.out::println);

C'est 124 octets

Écrivez == avec>

C'est un caractère plus court.

IntStream.range(1,101).mapToObj(i->(i%3>0&&i%5>0)?i:i%3>0?"Buzz":i%5>0?"Fizz":"FizzBuzz").forEach(System.out::println);

C'est 120 octets. ** Nous recherchons des moyens de le rendre encore plus court **

Résumé

stream amusant

Postscript

Il a écrit un code plus court dans la section commentaires.

IntStream.range(1,101).forEach(i->System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i)));

Supprime la redondance des chaînes dans FizzBuzz. Sortie telle quelle sans utiliser mapToObj. Quel 100 octets !!

Recommended Posts

Sortie FizzBuzz avec flux
Sortie quatre-vingt-dix-neuf avec Stream
Sortie de fichier csv avec csv ouvert
Sortie CSV par Apache Commons CSV
Contrôle de la sortie du journal avec Doma2
Sortie "Izumi Oishi" avec dokojava
Sortie d'Excel avec des formules avec XlsMapper
Caractères de sortie comme une conversation avec JavaFX
Couverture de test de sortie avec Clover + Gradle
[Java] Vérification de l'existence des éléments avec Stream
Sortie PDF et TIFF avec Java 8
Conversion de liste Java8 avec Stream map
Sortie de l'heure système sur MANIFEST.MF avec Maven
Implémenter l'entrée / sortie d'image avec Spring MVC