2017-10-14 12 views
1

L'utilisateur entre une date au format XX/XX/XXXX et j'utilise un délimiteur pour sélectionner les entiers dans l'entrée, mais je n'arrive pas à comprendre comment obtenir la variable de l'année sans en placer une autre à la fin de l'entrée. Comment puis-je obtenir la variable de cette année?Pourquoi le scanner ne prend-il pas ma variable d'année sans/à la fin?

Merci à l'avance

package formatting_problem; 

import java.util.Scanner; 
public class DateFormatter { 
public static void main(String[] args) { 
    Integer day = 0; 
    Integer month = 0; 
    Integer year = 0; 
    Integer test = null; 
    Scanner input = new Scanner(System.in).useDelimiter("/"); 
    System.out.println("Enter a date in the format XX/XX/XXXX to be formatted to Month Day,Year"); 
    while (input.hasNext()){ 
     month = input.nextInt(); 
     day = input.nextInt(); 
     year = input.nextInt(); 
     System.out.println(); 
    } 

Répondre

2

Comment puis-je faire pour obtenir cette variable d'année?

Vous pouvez simplement utiliser String.split():

String tokens[] = input.split("/");  //where input is a String 
int month = Integer.parseInt(tokens[0]); 
int day = Integer.parseInt(tokens[1]); 
int year = Integer.parseInt(tokens[2]); 

Remarque: Vous pouvez simplement utiliser le type primitif int au lieu de leur classe d'emballage Integer.


Pour répondre à votre question, c'est parce que le délimiteur que vous avez affecté est seulement une barre oblique. En Java, par défaut, les caractères de nouvelle ligne sont également l'un des délimiteurs. Cependant, dans votre redéfinition du délimiteur, il a été omis.

Pour résoudre ce problème, comprennent le caractère de nouvelle ligne ainsi:

Scanner input = new Scanner(System.in).useDelimiter("/|\\n"); 

Vous pouvez également supprimer votre boucle while, et juste:

int month = input.nextInt(); 
int day = input.nextInt(); 
int year = input.nextInt();