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