Bonjour. Je débute en java, et je n'arrive pas à terminer un test.
Je dois:
- Écrire un programme qui lit au clavier une ligne au format CSV contenant trois champs (trois colonnes) séparées par des points-virgules.
Le premier est le nom d'une personne, le second son prénom et le troisième contient la date de naissance. Le nom et le prénom sont entourés de guillemets (signe ").
La date est donnée au format jj/mm/aaaa (jour avec deux chiffres, mois avec deux chiffres, années avec 4 chiffres, séparés par une barre oblique).
- Le programme doit afficher les trois données sur trois lignes différentes. Le nom et le prénom doivent être affichés sans les guillemets. La date doit être affichée en créant un objet de type Date représentant cette date et en appelant la méthode toString sur cet objet.
Exemple de ligne au format CSV:
"Hugo";"Victor";26/02/1802
Exemple d'exécution du programme:
> java CSV
Entrez la ligne CSV: "Hugo";"Victor";26/02/1802
Hugo
Victor
Fri Feb 26 00:00:00 CET 1802
Le code suivant permet de lire une chaîne de caractère au clavier (l'usage de la classe Scanner est expliquée dans une séquence de la semaine 3, en attendant, vous pouvez utilisez ce fragment de code tel quel):
String ligneCSV;
Scanner sc = new Scanner(System.in); // creation d'un objet scanner
ligneCSV = sc.nextLine(); // lecture d'une ligne et sauvegarde dans ligneCSV
Votre programme ne doit contenir qu'une seule classe dans un seul fichier java. Cette classe doit contenir une méthode main qui réalise exactement le travail demandé sans aucune autre entrée qu'une ligne de texte au format CSV.
Si la ligne ne contient pas les trois informations sous la forme attendue, le programme doit afficher le message Erreur de format. Il ne doit jamais s'arrêter avec un exception.
Je ne sais pas comment obliger l'internaute à saisir les info sous la forme demandée.
Voici mon code:
Par avance, je vous remercie de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 import java.util.Scanner; import java.util.Date; public class Nom { public static void main(String[]args){ java.util.Scanner entree = new java.util.Scanner(System.in); try{ //données entrées au clavier String LigneCSV; Scanner sc = new Scanner(System.in); LigneCSV = sc.nextLine(); //découpage : methode split String[]tabLigne = LigneCSV.split(";"); //methode replace: remplace les "" tabLigne[0]= tabLigne[0].replace("\"",""); tabLigne[1]= tabLigne[1].replace("\"",""); tabLigne[2] = tabLigne[2].replace("/"," "); //methode trim: enleve les espaces au début et à la fin tabLigne[0]= tabLigne[0].trim(); tabLigne[1]= tabLigne[1].trim(); tabLigne[2] = tabLigne[2].trim(); //methode substring pour extraire jour, mois, année de la date. String resDay = tabLigne[2].substring(0,2); String resMonth = tabLigne[2].substring(3,5); String resYear = tabLigne[2].substring(6,10); //methode concat pour concacténer mois jour année String resMonthDay = resMonth.concat("/"+resDay); String naissanceEnt = resMonthDay.concat("/"+resYear); //traitement de la date pour qu'elle s'affiche en string Date naissance = new Date (naissanceEnt); String st = naissance.toString(); //affichage System.out.println(tabLigne[0]); System.out.println(tabLigne[1]); System.out.println(naissance); }catch(Exception e){ System.out.println( "Erreur de format"); } } }
Partager