2017-09-27 5 views
0

J'essaie de calculer l'angle de l'aiguille des heures, des minutes, des secondes et des secondes. Je calcule le calcul mais j'ai des problèmes avec le formatage de l'entrée de l'utilisateur. Voici ce que je veux ...Restriction de la saisie de l'utilisateur en tant que HHMMSS

temps d'entrée: 235429 Deuxième heure: 176.76 degrés minute secondes: 152,9 degrés heures minutes: 30.34 degrés

Comme vous pouvez le voir, Je voudrais avoir le format d'entrée de l'utilisateur comme HHMMSS, mais je n'ai aucune idée de la façon de le formater. Pouvez-vous me donner une idée de la façon de formater l'entrée de l'utilisateur qu'il peut détecter chaque deux caractères individuels comme HH, MM et SS? T Merci beaucoup pour votre temps.

+1

avez-vous vu la [documentation] (https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)? –

Répondre

1

Utilisez Java 8 LocalTime avec un DateTimeFormatter en utilisant le modèle "HHmmss" transmis à parse().

Exemple

String userInput = "235429"; 

LocalTime time = LocalTime.parse(userInput, DateTimeFormatter.ofPattern("HHmmss")); 
System.out.println("Hour : " + time.getHour()); 
System.out.println("Minute: " + time.getMinute()); 
System.out.println("Second: " + time.getSecond()); 

Sortie

Hour : 23 
Minute: 54 
Second: 29 

Si l'utilisateur donne une mauvaise entrée, par exemple 236429, il throws Exception:

java.time.format.DateTimeParseException: Texte '236429' n'a pas pu être analysée: Valeur non valide pour MinuteOfHour (valeurs valides 0 - 59): 64

Trap the exception pour détecter et gérer les entrées invalides de l'utilisateur.

try { 
    LocalTime time = LocalTime.parse(userInput, DateTimeFormatter.ofPattern("HHmmss")); 
} catch (DateTimeParseException e){ 
    … // Handle invalid user’s invalid input. 
} 
+0

Y at-il de toute façon que je peux combiner 3 entrées en une seule entrée? Comme Input = HHMMSS; –

+2

@HyunMoLukeYang '235429' * correspond à * 3 valeurs (heure, minute et seconde) combinées en une au format' HHMMSS'. Je ne comprends pas ce que vous demandez. – Andreas

+0

Oh ce que je veux dire est que Au lieu de la liste 3 entrées différentes comme Heure: 23 Minute: 54 Deuxième: 29 –