Je dois calculer la somme du chiffre d'une chaîne (lecture via via Scanner) dans une doublure. De plus, je dois m'assurer que l'entrée n'est calculée que si l'entrée a exactement 3 chiffres.
Ce que j'ai eu jusqu'à présent: p> mais comment puis-je prouver dans cette doublure qu'il y a exactement 3 chiffres? p> p>
3 Réponses :
envelopper votre code dans un Notez que vous pouvez remplacer: p> avec: p> ou, parce que vous avez exactement 3 chiffres, juste: p> en option code> qui utilise filtre () code> pour vérifier la longueur et orelse () code> pour fournir la sortie pour la mauvaise longueur entrée:
@Jan je vois ton point maintenant. J'ai changé le filtre au filtre (str -> str.matches ("\\ d {3}")) code>
Cela pourrait être quelque chose comme ça. Coupes de ligne ajoutées pour Lisabiliy
public static void main(String... args) {
System.out.print(
//Make input into String-Stream
Arrays.asList(new java.util.Scanner(System.in).nextLine()).stream()
//Throw away averything not three digits
.filter(s -> s.matches("\\d{3}"))
//Perform digit-sum (make it a String)
.map(e -> ""+e.chars().mapToObj(i -> ((char)i)-'0').reduce(0, (a,b)->a+b))
//return this if there is something
.findFirst()
//Or give error message
.orElse("No valid input!"));
}
à quoi ça se passe. Le manque de sortie indique une mauvaise entrée (puisque vous ne spécifiez pas quoi faire dans ce cas).
System.out.println(Stream.of(new Scanner(System.in)
.nextLine())
.filter(a -> a.matches("\\d{3}"))
.map(Integer::valueOf)
.map(a -> a / 100 + (a / 10) % 10 + a % 10)
// convert back to string
.map(Object::toString)
.findFirst()
.orElse("Not 3 digits"));
Vous pouvez les matrices.Stramez la chaîne d'entrée complète, puis filtrez pour assortir la REGEX \ D {3} TOUTFIRSTRST -> Votre message d'erreur d'orelse?
Quel devrait faire le code s'il n'y a pas 3 chiffres?
Il suffit d'imprimer quelque chose comme
"entrée non valide" code>Par "une doublure", vous voulez dire une déclaration? Parce que vous pouvez écrire n'importe quel programme en une seule ligne en Java.
@HENRY, oui bien sûr