Příklad:
Existují slova, která se čtou stejně zleva doprava i zprava doleva (např. radar). Napište program, který bude tato slova generovat z jejich první poloviny zadané z klávesnice. 1
Řešení:
Originální řešení od Pavla Herouta.
Moje řešení
Zde je moje řešení daného cvičení naprogramovaného ve vizuálním vývojovém prostředí NetBeans :
- Varianta s využitím funkce reverse() s použitím StringBuffer 1
- Varianta s využitím funkce reverse() s použitím StringBuffer 2
- Varianta bez využití funkce reverse() s použitím StringBuffer
- Varianta bez využití funkce reverse() bez použití StringBuffer - využívající pouze obyčejný String
Varianta s využitím funkce reverse() s použitím StringBuffer 1
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package javaapplicationradar; import java.util.Scanner; /** * * @author Jitka */ public class Radar { public static void main(String[] args) { System.out.println("Zadej první polovinu slova: "); // vytiskneme na obrazovku uvodni text Scanner scanner = new Scanner(System.in); // vytvorime scanner pro cteni vstupu String s = scanner.nextLine(); // nacteme vstup od uzivatele - radek // ulozime si do druhaPulkaSlova nactene slovo bez posledniho pismene StringBuffer druhaPulkaSlova = new StringBuffer(s.substring(0, s.length() - 1)); druhaPulkaSlova.reverse(); // otocime toto slovo s += druhaPulkaSlova; // otocene slovo pridame k puvodnimu slovu System.out.println(s); // vytiskneme zrcadlove slovo } }
Varianta s využitím funkce reverse() s použitím StringBuffer 2
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package javaapplicationradar; import java.util.Scanner; /** * * @author Jitka */ public class Radar { public static void main(String[] args) { System.out.println("Zadej první polovinu slova: "); // vytiskneme na obrazovku uvodni text Scanner scanner = new Scanner(System.in); // vytvorime scanner pro cteni vstupu String s = scanner.nextLine(); // nacteme vstup od uzivatele - radek StringBuffer sb = new StringBuffer(s); // ulozime si do druhaPulkaSlova nactene slovo sb.reverse(); // otocime toto slovo sb.deleteCharAt(0); // smazneme prvni pismeno, aby ve vysledku nebylo 2x System.out.println(s + sb); // vytiskneme zrcadlove slovo } }
Varianta bez využití funkce reverse() s použitím StringBuffer
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package javaapplicationradar; import java.util.Scanner; /** * * @author Jitka */ public class Radar { public static void main(String[] args) { System.out.println("Zadej první polovinu slova: "); // vytiskneme na obrazovku uvodni text Scanner scanner = new Scanner(System.in); // vytvorime scanner pro cteni vstupu String s = scanner.nextLine(); // nacteme vstup od uzivatele - radek StringBuffer sb = new StringBuffer(s); // ulozime ho do buffer stringu int puvodniDelkaSlova = sb.length(); // zjistime delku retezce sb.setLength(2 * puvodniDelkaSlova - 1); // nastavime delku zhruba na dvojnasobek for (int i = 0; i < puvodniDelkaSlova - 1; i++) { // projedeme zacatek retezce char ch = sb.charAt(i); // zjistime znak na indexu i sb.setCharAt(sb.length() - i - 1, ch); // znak ulozime do volnych pozic odzadu } System.out.println(sb); // vytiskneme zrcadlove slovo } }
Varianta bez využití funkce reverse() bez použití StringBuffer - využívající pouze obyčejný String
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package javaapplicationradar; import java.util.Scanner; /** * * @author Jitka */ public class Radar { /** * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Zadej první polovinu slova: "); // vytiskneme na obrazovku uvodni text Scanner scanner = new Scanner(System.in); // vytvorime scanner pro cteni vstupu String s = scanner.nextLine(); // nacteme vstup od uzivatele - radek int delkaStringu = s.length(); // zjistime delku retezce for (int i = delkaStringu - 2; i >= 0; i--) { // projdeme retezec odzadu, posledni (prvni) pismeno ignorujeme s += s.charAt(i); // jednotliva pismena odzadu pridavame za prvni polovinu slova } System.out.println(s); // vytiskneme zrcadlove slovo } }
1. HEROUT, Pavel. Učebnice jazyka Java rozšířené vydání zahrnuje změny od Java 5. 5. vyd. České Budějovice: KOPP. 2010. ISBN 978-80-7232-398-2, str. 187