précédent | suivant | table des matières | s'évaluer |
|
La classe Scanner permet d'annalyser dans un flux les types primitifs java et les chaînes de caractères en utilisant des expressions régulières.
Exemples :
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
Scanner = new Scanner(new FileInputStream("xxx")); while (sc.hasNextLong(){ long l = sc.nextlong(); }
String s = "1 un 2 deux 3 trois"; Scanner sc = new Scanner(s); System.out.println(sc.nextInt()+" "+sc.next()); System.out.println(sc.nextInt()+" "+sc.next()); sc.close();
1 Délimiteur
\p{javaWhiteSpace}+c'est à dire un ou plusieurs javaWhiteSpace ( espace, tabulation, retour à la ligne, ...)
String s = "1/aun//a2////adeux/a3/atrois";
Scanner sc = new Scanner(s);
sc.useDelimiter( Pattern.compile("/+a")); // un ou plusieurs / suivis de a
System.out.println(sc.nextInt()+" "+sc.next());
System.out.println(sc.nextInt()+" "+sc.next());
sc.close();
2 Localisation
String s = "1,2 2,3"; Scanner sc = new Scanner(s); System.out.println(sc.nextDouble()); System.out.println(sc.nextDouble()); sc.close();
String s = "1.2 2.3"; Scanner sc = new Scanner(s); sc.useLocale(Locale.ENGLISH); System.out.println(sc.nextDouble()); System.out.println(sc.nextDouble()); sc.close();
3 Constructeurs
Scanner(File source) |
Construit un nouveau Scanner à partir du File f. Les octets lus sont convertis en caractères en utilisant le charSet par défaut. |
Scanner(File source, String charsetName) |
Construit un nouveau ScannerFile f. Les octets lus sont convertis en caractères en utilisant le charSet spécifié. |
Scanner(InputStream source) |
Construit un nouveau Scanner à partir du flux d'octets source. Les octets lus sont convertis en caractères en utilisant le charSet par défaut. |
Scanner(InputStream source, String charsetName) |
Construit un nouveau Scanner à partir du flux d'octets source. Les octets lus sont convertis en caractères en utilisant le charSet spécifié. |
Scanner(Readable source) |
Construit un nouveau Scanner à partir du flux de caractères source. |
Scanner(String source) |
Construit un nouveau Scanner à partir de la chaîne source. |
Un charSet est un mapping entre le codage unicode des caractères et des codages de caractères sous forme de séquences d'octets :
US-ASCII | 7-bit ASCII, a.k.a. ISO646-US, a.k.a. l'ensemble des caractères latins de base. |
ISO-8859-1 | ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1 |
UTF-8 | 8-bit UCS Transformation Format : chaque caractère est codé par une suite de 1 à 4 octets |
UTF-16BE | 16-bit UCS Transformation Format, big-endian byte order |
UTF-16LE | 16-bit UCS Transformation Format, little-endian byte order |
UTF-16 | 16-bit UCS Transformation Format, chaque caractère est codé par 2 ou 4 octets. |
4 Méthodes
Les principales méthodes ont la forme boolean hasNextX() et X nextX() pour X qui est :
et les méthodes suivantes :
boolean hasNext() |
Retourne true s'il existe un autre token dans l'entrée. |
boolean hasNext(Pattern p) |
Retourne true s'il existe un autre token dans l'entrée, satifaisant le Pattern p. |
boolean hasNext(String p) |
Retourne true s'il existe un autre token dans l'entrée, satifaisant le pattern décrit par la String p. |
boolean hasNextLine() |
Retourne true s'il existe une autre ligne dans l'entrée. |
String next() |
Retourne le token suivant. |
String next(Pattern p) |
Retourne le token suivant, s'il correspond au Pattern p, et lève une exception NoSuchElementException sinon. |
String next(String p) |
Retourne le token suivant, s'il correspond au Pattern p, et lève une exception NoSuchElementExceptionsinon. |
String nextLine() |
Retourne le reste de la ligne, et lève une exception NoSuchElementException sinon. |
Pattern delimiter() |
Retourne le Pattern delimiteur utilisé par le Scanner. |
Scanner useDelimiter(Pattern p) |
Retourne le Scanner après avoir changeé son Pattern délimiteur. |
Scanner useDelimiter(String p p) |
Retourne le Scanner après avoir changeé son Pattern délimiteur. |
Locale locale() |
Retourne la localisation du Scanner>. |
Scanner useLocale(Locale l) |
Retourne le Scanner> après avoir changé sa localisation. |
int radix() |
Retourne la base dans laquelle sont écrits les nombre pour le décodage du Scanner. |
Scanner useRadix(int radix) |
Retourne le Scanner après avoir cahngé la base des nombres. |
5 Exceptions