Övning - Textbehandling
I denna övning ska vi skapa en interaktiv “ordbehandlingsapp” i Java där användaren kan manipulera text på olika sätt. Vi kommer att använda delegater för att representera olika textmanipulationsmetoder och ge användaren möjlighet att välja och utföra önskad manipulation på en given textsträng.
Instruktioner
- Skapa ett Java-program med en klass kallad
TextManipulator. - Definiera en delegat med namnet
TextManipulation, som har en metodmanipulatesom tar en textsträng som parameter och returnerar en manipulerad textsträng. - Implementera metoder i
TextManipulatorför olika textmanipulationsfunktioner, till exempel:toUpperCase: Konverterar hela texten till versaler.toLowerCase: Konverterar hela texten till gemener.reverse: Vänder ordningen på tecken i texten.removeSpaces: Tar bort alla mellanslag från texten.
- Skapa en metod i
TextManipulatormed namnetperformManipulation, som tar en textsträng och enTextManipulation-delegat som parametrar. Denna metod ska använda delegaten för att manipulera den givna textsträngen och returnera resultatet. - Implementera en interaktiv användargränssnitt där användaren kan ange en textsträng och välja en manipulationsfunktion från en meny. Användaren ska sedan kunna se det manipulerade resultatet.
Exempelkörning
Välkommen till Text Manipulation-appen!
Ange en textsträng: Hello, World!
Välj en textmanipulation:1. Konvertera till versaler2. Konvertera till gemener3. Vänd texten4. Ta bort mellanslag5. Avsluta
Ange ditt val (1/2/3/4/5): 2
Resultatet av textmanipulationen är: hello, world!
Vill du göra en annan textmanipulation? (Ja/Nej): Ja
Ange en textsträng: Programming is Fun!
Välj en textmanipulation:1. Konvertera till versaler2. Konvertera till gemener3. Vänd texten4. Ta bort mellanslag5. Avsluta
Ange ditt val (1/2/3/4/5): 3
Resultatet av textmanipulationen är: !nuF si gnimmargorP
Vill du göra en annan textmanipulation? (Ja/Nej): Nej
Tack för att du använde Text Manipulation-appen!Tips
- För att implementera metoden
performManipulation, använd delegaten som en vanlig metodanrop med hjälp avmanipulate-metoden. - Använd en loop för att fråga användaren om de vill göra fler textmanipulationer.
- Använd
Scanner-klassen för att läsa in användarens input.
Utmaning
Om du vill göra övningen mer avancerad, kan du lägga till fler textmanipulationsfunktioner och låta användaren kombinera flera manipulationssteg i en sekvens!
Lösningsförslag
Här är lösningenimport java.util.Scanner;
public class TextManipulator { // Definiera delegaten TextManipulation interface TextManipulation { String manipulate(String text); }
// Metoder för olika textmanipulationsfunktioner public static String toUpperCase(String text) { return text.toUpperCase(); }
public static String toLowerCase(String text) { return text.toLowerCase(); }
public static String reverse(String text) { return new StringBuilder(text).reverse().toString(); }
public static String removeSpaces(String text) { return text.replaceAll("\\s+", ""); }
// Metod för att utföra textmanipulation baserat på vald delegat public static String performManipulation(String text, TextManipulation manipulation) { return manipulation.manipulate(text); }
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Välkommen till Text Manipulation-appen!\n");
String inputText; do { System.out.print("Ange en textsträng: "); inputText = scanner.nextLine();
System.out.println("\nVälj en textmanipulation:"); System.out.println("1. Konvertera till versaler"); System.out.println("2. Konvertera till gemener"); System.out.println("3. Vänd texten"); System.out.println("4. Ta bort mellanslag"); System.out.println("5. Avsluta");
System.out.print("\nAnge ditt val (1/2/3/4/5): "); int choice = Integer.parseInt(scanner.nextLine());
String manipulatedText = ""; switch (choice) { case 1: manipulatedText = performManipulation(inputText, TextManipulator::toUpperCase); break; case 2: manipulatedText = performManipulation(inputText, TextManipulator::toLowerCase); break; case 3: manipulatedText = performManipulation(inputText, TextManipulator::reverse); break; case 4: manipulatedText = performManipulation(inputText, TextManipulator::removeSpaces); break; case 5: System.out.println("\nTack för att du använde Text Manipulation-appen!"); scanner.close(); return; default: System.out.println("\nOgiltigt val. Försök igen."); }
System.out.println("\nResultatet av textmanipulationen är: " + manipulatedText); System.out.print("\nVill du göra en annan textmanipulation? (Ja/Nej): "); } while (scanner.nextLine().equalsIgnoreCase("Ja"));
System.out.println("\nTack för att du använde Text Manipulation-appen!"); scanner.close(); }}