Fortgeschrittene Scanner-Techniken
Techniken zur Verwendung benutzerdefinierter Trennzeichen
Konfiguration von Trennzeichen
import java.util.Scanner;
public class CustomDelimiterDemo {
public static void main(String[] args) {
// Verwendung eines benutzerdefinierten Trennzeichens
String input = "apple,banana;orange:grape";
Scanner scanner = new Scanner(input).useDelimiter("[,;:]");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}
Arten von Trennzeichen
Trennzeichentyp |
Anwendungsfall |
Beispiel |
Komma |
CSV-Analyse |
"1,2,3,4" |
Leerzeichen |
Token-Trennung |
"hello world" |
RegEx |
Komplexe Analyse |
"[,;:]" |
Fortgeschrittene Eingabeanalyse
public class AdvancedParsingDemo {
public static void parseComplexInput(String input) {
Scanner scanner = new Scanner(input);
scanner.useDelimiter("\\s*,\\s*");
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
System.out.println("Integer: " + scanner.nextInt());
} else {
System.out.println("String: " + scanner.next());
}
}
scanner.close();
}
}
Scanner-Analyseablauf
graph TD
A[Eingabestring] --> B[Scanner konfigurieren]
B --> C{Tokens analysieren}
C -->|Integer| D[Integer verarbeiten]
C -->|String| E[String verarbeiten]
D, E --> F{Weitere Tokens?}
F -->|Ja| C
F -->|Nein| G[Scanner schließen]
Dateilesetechniken
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileReadingDemo {
public static void readFileWithScanner(String filepath) {
try (Scanner scanner = new Scanner(new File(filepath))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
processLine(line);
}
} catch (FileNotFoundException e) {
System.err.println("Datei nicht gefunden: " + filepath);
}
}
private static void processLine(String line) {
// Anpassende Zeilenverarbeitungslogik
System.out.println(line);
}
}
Optimierung der Scanner-Leistung
Optimierungstechnik |
Beschreibung |
Try-with-resources |
Automatische Ressourcenverwaltung |
Puffergelesen |
Effizient für große Dateien |
Selektive Analyse |
Verarbeiten nur erforderlicher Tokens |
Fortgeschrittene Eingabeprüfung
public class InputValidator {
public static boolean validateInput(Scanner scanner,
InputType type) {
switch(type) {
case INTEGER:
return scanner.hasNextInt();
case DOUBLE:
return scanner.hasNextDouble();
case EMAIL:
return validateEmail(scanner.next());
default:
return false;
}
}
private static boolean validateEmail(String email) {
// Komplexe E-Mail-Prüfungslogik
return email.contains("@");
}
}
Leistungsüberlegungen
graph LR
A[Scanner-Eingabe] --> B{Analysestrategie}
B -->|Effizient| C[Optimierte Verarbeitung]
B -->|Ineffizient| D[Leistungsverlust]
Beste Praktiken für LabEx-Lerner
- Verwenden Sie passende Trennzeichen
- Implementieren Sie eine robuste Fehlerbehandlung
- Schließen Sie Scanner-Ressourcen
- Wählen Sie effiziente Analysestrategien
- Validieren Sie die Eingabe vor der Verarbeitung
Fazit
Fortgeschrittene Scanner-Techniken erfordern ein tiefes Verständnis von Eingabeanalyse, Trennzeichenkonfiguration und Leistungsoptimierung. Indem Entwickler diese Techniken beherrschen, können sie robuster und effizientere Java-Anwendungen erstellen.