Bonjour à tous,
Je suis confronté à un problème de fin d’entrée sur la classe Scanner, méthode hasNext().
Le code (recopié d’un livre), est le suivant :
(Les parties inutiles pour ce post sont omises)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static void main(String[] args) { openFile(); addRecords(); closeFile(); }
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 public static void addRecords() { Scanner input = new Scanner(System.in); System.out.printf("%s%n%s%n? ", "Enter account number, first name, last name and balance.", "Enter end-of-file indicator to end input."); while (input.hasNext()) { try { // output new record to file; assumes valid input output.format("%d %s %s %.2f%n", input.nextInt(), input.next(), input.next(), input.nextDouble()); } catch (FormatterClosedException formatterClosedException) { System.err.println("Error writing to file. Terminating."); break; } catch (NoSuchElementException elementException) { System.err.println("Invalid input. Please try again."); input.nextLine(); } System.out.print("? "); }
Le problème est que le programme ne lance jamais la méthode closeFile() parce que la détection de fin d’entrée
while (input.hasNext()) de la méthode addRecords()
ne reçoit pas la valeur attendue.
Etant sous Mac, j’ai essayé les informations trouvées sur le web, à savoir :
crtl d
ctrl q suivi de crtl d
Rien ne fonctionne.
Quelle est la combinaison de touches pour réaliser, sous Mac, l'équivalent d'un CTRL-Z de Windows ?
Merci pour votre aide.
Cordialement.
Partager