Polecenie 1

Przeanalizuj infografikę, która przedstawia schemat działania programu, a następnie przejdź do dalszej części implementacji projektu.

R1TMpvamhD6LZ
Mapa interaktywna. Lista elementów: Schemat działania algorytmu.
Ikona człowieka z znakami zapytania.
. Wybór operacji: Użytkownikowi aplikacji zostanie wyświetlona wiadomość o możliwych do podjęcia operacjach – będą to: szyfrowanie, deszyfrowanie oraz zakończenie działania programu.2. Ikona schematu blokowego.
Wybór algorytmu: Następnie osoba korzystająca z aplikacji zostanie poproszona o wybór jednego z dwóch dostępnych algorytmów: szyfru Cezara lub szyfru płotkowego.3. Ikona klawiatury z dłonią.
Wprowadzenie ciągu znaków: Użytkownik wprowadza słowo, które chce poddać operacji szyfrowania lub deszyfrowania, wybranej we wcześniejszy kroku.4. Ikona klucza i kłódki.
Klucz szyfrujący: Zarówno algorytm szyfru Cezara, jak i szyfr płotkowy, wykorzystują wartość klucza szyfrującego do zaszyfrowania danego ciągu znaków. Użytkownik określa tę wartość przez wprowadzenie liczby całkowitej.5. Ikona laptopa.
Wyświetlenie wyniku: Następnie wprowadzony ciąg znaków zostaje poddany operacji szyfrowania/deszyfrowania (zgodnie z określonym kluczek) i użytkownikowi zostaje wyświetlony wynik.6. Ikona zapętlających się strzałek tworzących okrąg.
Powtórzenie operacji: program umożliwi użytkownikowi ponowne zaszyfrowanie/odszyfrowanie ciągu znaków przez ponowne wyświetlenie menu. Zakończenie działania aplikacji nastąpi dopiero wtedy, gdy użytkownik wybierze tę opcję w menu głównym.
Źródło: Contentplus.pl Sp. z o.o., Schemat działania algorytmu szyfrujacego, licencja: CC BY-SA 3.0.

Implementacja programu – ciąg dalszy

Po przeanalizowaniu przedstawionej infografiki, ukazującej schemat działania programu, przejdźmy do jego dalszej implementacji.

Zacznijmy od zdefiniowania dwóch łańcuchów znaków, które będą pełnić funkcję menu programu.

Linia 1. static String menu znak równości cudzysłów Jaką operację chcesz wykonać otwórz nawias okrągły wybierz odpowiednią liczbę 1 minus 3 zamknij nawias okrągły znak zapytania lewy ukośnik n cudzysłów plus. Linia 2. cudzysłów 1 kropka Szyfrowanie lewy ukośnik n cudzysłów plus. Linia 3. cudzysłów 2 kropka Deszyfrowanie lewy ukośnik n cudzysłów plus. Linia 4. cudzysłów 3 kropka Zakończ program cudzysłów średnik. Linia 5. static String algorytmMenu znak równości cudzysłów Wybierz algorytm lewy ukośnik n cudzysłów plus. Linia 6. cudzysłów 1 kropka Szyfr Cezara lewy ukośnik n cudzysłów plus. Linia 7. cudzysłów 2 kropka Szyfr Płotkowy cudzysłów średnik.

Zawartość zmiennej menu będzie wyświetlana przy wyborze operacji do wykonania, natomiast zawartość zmiennej algorytmMenu – przy wyborze algorytmu szyfrującego/deszyfrującego.

Kolejnym krokiem jest utworzenie obiektu klasy Scanner. Będziemy go używać do pobierania danych od użytkownika. Aby móc z niego korzystać, niezbędne będzie zaimportowanie klasy Scanner.

Linia 1. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik.

Następnie wyświetlamy użytkownikowi menu główne. Może on podać liczbę całkowitą określająca wybraną operację – szyfrowania lub deszyfrowania – albo zakończyć program.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 6. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 7. zamknij nawias klamrowy.

Jeśli użytkownik nie zakończył działania programu i wskazał operację, prezentujemy mu menu wyboru algorytmu. Użytkownik podejmuje decyzję, wprowadzając kolejną liczbę.

Jeśli użytkownik wybrał opcję 3., program powinien się zakończyć.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 6. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 10. zamknij nawias klamrowy. Linia 12. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 13. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 14. zamknij nawias klamrowy.

Zgodnie ze schematem przedstawionym w infografice, użytkownik wprowadza ciąg znaków do zaszyfrowania bądź odszyfrowania.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 6. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 10. zamknij nawias klamrowy. Linia 12. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 13. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 14. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania prawy ukośnik odszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 15. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 16. zamknij nawias klamrowy.

Wyświetlamy komunikat o konieczności wprowadzenia klucza szyfrującego. Pobieramy od użytkownika liczbę całkowitą, będąca wartością tego klucza.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 6. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 10. zamknij nawias klamrowy. Linia 12. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 13. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 14. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania prawy ukośnik odszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 15. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 16. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj wartość klucza szyfrującego cudzysłów zamknij nawias okrągły średnik. Linia 17. int klucz znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 18. zamknij nawias klamrowy.

W odpowiednich miejscach instrukcji switch...case (określonych wartościami zmiennych wyborOperacji oraz wyborAlgorytmu) wywołujemy funkcje algorytmów szyfrowania oraz deszyfrowania, zaimplementowane w poprzedniej sekcji.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 6. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 10. zamknij nawias klamrowy. Linia 12. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 13. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 14. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania prawy ukośnik odszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 15. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 16. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj wartość klucza szyfrującego cudzysłów zamknij nawias okrągły średnik. Linia 17. int klucz znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 18. switch otwórz nawias okrągły wyborOperacji zamknij nawias okrągły otwórz nawias klamrowy. Linia 19. case 1 dwukropek. Linia 20. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 21. case 1 dwukropek. Linia 22. System kropka out kropka println otwórz nawias okrągły szyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 23. break średnik. Linia 24. case 2 dwukropek. Linia 25. System kropka out kropka println otwórz nawias okrągły szyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 26. break średnik. Linia 27. zamknij nawias klamrowy. Linia 28. break średnik. Linia 29. case 2 dwukropek. Linia 30. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. case 1 dwukropek. Linia 32. System kropka out kropka println otwórz nawias okrągły deszyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 33. break średnik. Linia 34. case 2 dwukropek. Linia 35. System kropka out kropka println otwórz nawias okrągły deszyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 36. break średnik. Linia 37. zamknij nawias klamrowy. Linia 38. break średnik. Linia 39. zamknij nawias klamrowy. Linia 40. zamknij nawias klamrowy.

Ostatnim krokiem jest umieszczenie napisanego kodu w pętli while. Operacja ta umożliwi użytkownikowi wielokrotne korzystanie z funkcji programu bez konieczności jego ponownego uruchamiania.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 5. while otwórz nawias okrągły true zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 7. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 9. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 11. zamknij nawias klamrowy. Linia 13. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 14. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 15. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania prawy ukośnik odszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 16. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 17. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj wartość klucza szyfrującego cudzysłów zamknij nawias okrągły średnik. Linia 18. int klucz znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 19. switch otwórz nawias okrągły wyborOperacji zamknij nawias okrągły otwórz nawias klamrowy. Linia 20. case 1 dwukropek. Linia 21. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 22. case 1 dwukropek. Linia 23. System kropka out kropka println otwórz nawias okrągły szyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 24. break średnik. Linia 25. case 2 dwukropek. Linia 26. System kropka out kropka println otwórz nawias okrągły szyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 27. break średnik. Linia 28. zamknij nawias klamrowy. Linia 29. break średnik. Linia 30. case 2 dwukropek. Linia 31. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 32. case 1 dwukropek. Linia 33. System kropka out kropka println otwórz nawias okrągły deszyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 34. break średnik. Linia 35. case 2 dwukropek. Linia 36. System kropka out kropka println otwórz nawias okrągły deszyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 37. break średnik. Linia 38. zamknij nawias klamrowy. Linia 39. break średnik. Linia 40. zamknij nawias klamrowy. Linia 41. zamknij nawias klamrowy. Linia 42. zamknij nawias klamrowy.

Gotowy projekt

Kod całego programu wygląda następująco:

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public class Projekt otwórz nawias klamrowy. Linia 5. static final String menu znak równości cudzysłów Jaką operację chcesz wykonać otwórz nawias okrągły wybierz odpowiednią liczbę 1 minus 3 zamknij nawias okrągły znak zapytania lewy ukośnik n cudzysłów plus. Linia 6. cudzysłów 1 kropka Szyfrowanie lewy ukośnik n cudzysłów plus. Linia 7. cudzysłów 2 kropka Deszyfrowanie lewy ukośnik n cudzysłów plus. Linia 8. cudzysłów 3 kropka Zakończ program cudzysłów średnik. Linia 9. static final String algorytmMenu znak równości cudzysłów Wybierz algorytm lewy ukośnik n cudzysłów plus. Linia 10. cudzysłów 1 kropka Szyfr Cezara lewy ukośnik n cudzysłów plus. Linia 11. cudzysłów 2 kropka Szyfr Płotkowy cudzysłów średnik. Linia 13. static String szyfrujCezarem otwórz nawias okrągły String tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 14. String wynik znak równości cudzysłów cudzysłów średnik. Linia 15. int ruch znak równości 0 średnik. Linia 17. if otwórz nawias okrągły klucz zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. if otwórz nawias okrągły klucz zamknij nawias ostrokątny 26 zamknij nawias okrągły otwórz nawias klamrowy. Linia 19. klucz znak równości klucz procent 26 średnik. Linia 20. zamknij nawias klamrowy. Linia 21. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 22. ruch znak równości 0 średnik. Linia 23. if otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias ostrokątny 90 zamknij nawias okrągły otwórz nawias klamrowy. Linia 24. ruch znak równości otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias okrągły minus 26 średnik. Linia 25. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 26. ruch znak równości tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz średnik. Linia 27. zamknij nawias klamrowy. Linia 28. wynik plus znak równości otwórz nawias okrągły char zamknij nawias okrągły otwórz nawias okrągły ruch zamknij nawias okrągły średnik. Linia 29. zamknij nawias klamrowy. Linia 30. zamknij nawias klamrowy else if otwórz nawias okrągły klucz otwórz nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. if otwórz nawias okrągły klucz otwórz nawias ostrokątny minus 26 zamknij nawias okrągły otwórz nawias klamrowy. Linia 32. klucz znak równości klucz procent minus 26 średnik. Linia 33. zamknij nawias klamrowy. Linia 34. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 35. ruch znak równości 0 średnik. Linia 36. if otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz otwórz nawias ostrokątny 65 zamknij nawias okrągły otwórz nawias klamrowy. Linia 37. ruch znak równości otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias okrągły plus 26 średnik. Linia 38. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 39. ruch znak równości tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz średnik. Linia 40. zamknij nawias klamrowy. Linia 41. wynik plus znak równości otwórz nawias okrągły char zamknij nawias okrągły otwórz nawias okrągły ruch zamknij nawias okrągły średnik. Linia 42. zamknij nawias klamrowy. Linia 43. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 44. wynik znak równości tekst średnik. Linia 45. zamknij nawias klamrowy. Linia 46. return wynik średnik. Linia 47. zamknij nawias klamrowy. Linia 49. static String deszyfrujCezarem otwórz nawias okrągły String tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 50. return szyfrujCezarem otwórz nawias okrągły tekst przecinek minus klucz zamknij nawias okrągły średnik. Linia 51. zamknij nawias klamrowy. Linia 53. static String deszyfrujMetodaPlotkowa otwórz nawias okrągły String tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 54. String wynik znak równości cudzysłów cudzysłów średnik. Linia 55. boolean wDol znak równości true średnik. Linia 56. Character otwórz nawias kwadratowy zamknij nawias kwadratowy otwórz nawias kwadratowy zamknij nawias kwadratowy plot znak równości new Character otwórz nawias kwadratowy tekst kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias kwadratowy otwórz nawias kwadratowy klucz zamknij nawias kwadratowy średnik. Linia 57. for otwórz nawias okrągły int i znak równości 0 przecinek j znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 58. plot otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości apostrof X apostrof średnik. Linia 59. if otwórz nawias okrągły j znak równości znak równości klucz minus 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 60. wDol znak równości false średnik. Linia 61. zamknij nawias klamrowy else if otwórz nawias okrągły j znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 62. wDol znak równości true średnik. Linia 63. zamknij nawias klamrowy. Linia 65. if otwórz nawias okrągły wDol zamknij nawias okrągły otwórz nawias klamrowy. Linia 66. j plus plus średnik. Linia 67. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 68. j minus minus średnik. Linia 69. zamknij nawias klamrowy. Linia 70. zamknij nawias klamrowy. Linia 71. for otwórz nawias okrągły int i znak równości 0 przecinek k znak równości 0 średnik i otwórz nawias ostrokątny klucz średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 72. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 73. if otwórz nawias okrągły plot otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości null zamknij nawias okrągły otwórz nawias klamrowy. Linia 74. plot otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst kropka charAt otwórz nawias okrągły k zamknij nawias okrągły średnik. Linia 75. k plus plus średnik. Linia 76. zamknij nawias klamrowy. Linia 77. zamknij nawias klamrowy. Linia 78. zamknij nawias klamrowy. Linia 79. for otwórz nawias okrągły int i znak równości 0 przecinek j znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 80. wynik plus znak równości plot otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik. Linia 81. if otwórz nawias okrągły j znak równości znak równości klucz minus 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 82. wDol znak równości false średnik. Linia 83. zamknij nawias klamrowy else if otwórz nawias okrągły j znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 84. wDol znak równości true średnik. Linia 85. zamknij nawias klamrowy. Linia 86. if otwórz nawias okrągły wDol zamknij nawias okrągły otwórz nawias klamrowy. Linia 87. j plus plus średnik. Linia 88. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 89. j minus minus średnik. Linia 90. zamknij nawias klamrowy. Linia 91. zamknij nawias klamrowy. Linia 92. return wynik średnik. Linia 93. zamknij nawias klamrowy. Linia 95. static String szyfrujMetodaPlotkowa otwórz nawias okrągły String tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 96. String wynik znak równości cudzysłów cudzysłów średnik. Linia 97. boolean wDol znak równości true średnik. Linia 98. Character otwórz nawias kwadratowy zamknij nawias kwadratowy otwórz nawias kwadratowy zamknij nawias kwadratowy plot znak równości new Character otwórz nawias kwadratowy tekst kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias kwadratowy otwórz nawias kwadratowy klucz zamknij nawias kwadratowy średnik. Linia 99. for otwórz nawias okrągły int i znak równości 0 przecinek j znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 101. plot otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły średnik. Linia 102. if otwórz nawias okrągły j znak równości znak równości klucz minus 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 103. wDol znak równości false średnik. Linia 104. zamknij nawias klamrowy else if otwórz nawias okrągły j znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 105. wDol znak równości true średnik. Linia 106. zamknij nawias klamrowy. Linia 108. if otwórz nawias okrągły wDol zamknij nawias okrągły otwórz nawias klamrowy. Linia 109. j plus plus średnik. Linia 110. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 111. j minus minus średnik. Linia 112. zamknij nawias klamrowy. Linia 113. zamknij nawias klamrowy. Linia 114. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny klucz średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 115. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny plot kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 116. if otwórz nawias okrągły plot otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy wykrzyknik znak równości null zamknij nawias okrągły otwórz nawias klamrowy. Linia 117. wynik plus znak równości plot otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik. Linia 118. zamknij nawias klamrowy. Linia 119. zamknij nawias klamrowy. Linia 120. zamknij nawias klamrowy. Linia 121. return wynik średnik. Linia 122. zamknij nawias klamrowy. Linia 124. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 125. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 126. while otwórz nawias okrągły true zamknij nawias okrągły otwórz nawias klamrowy. Linia 127. System kropka out kropka println otwórz nawias okrągły menu zamknij nawias okrągły średnik. Linia 128. int wyborOperacji znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 130. if otwórz nawias okrągły wyborOperacji znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy. Linia 131. System kropka exit otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 132. zamknij nawias klamrowy. Linia 134. System kropka out kropka println otwórz nawias okrągły algorytmMenu zamknij nawias okrągły średnik. Linia 135. int wyborAlgorytmu znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 136. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania prawy ukośnik odszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 137. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 138. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj wartość klucza szyfrującego cudzysłów zamknij nawias okrągły średnik. Linia 139. int klucz znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 140. switch otwórz nawias okrągły wyborOperacji zamknij nawias okrągły otwórz nawias klamrowy. Linia 141. case 1 dwukropek. Linia 142. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 143. case 1 dwukropek. Linia 144. System kropka out kropka println otwórz nawias okrągły szyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 145. break średnik. Linia 146. case 2 dwukropek. Linia 147. System kropka out kropka println otwórz nawias okrągły szyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 148. break średnik. Linia 149. zamknij nawias klamrowy. Linia 150. break średnik. Linia 151. case 2 dwukropek. Linia 152. switch otwórz nawias okrągły wyborAlgorytmu zamknij nawias okrągły otwórz nawias klamrowy. Linia 153. case 1 dwukropek. Linia 154. System kropka out kropka println otwórz nawias okrągły deszyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 155. break średnik. Linia 156. case 2 dwukropek. Linia 157. System kropka out kropka println otwórz nawias okrągły deszyfrujMetodaPlotkowa otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 158. break średnik. Linia 159. zamknij nawias klamrowy. Linia 160. break średnik. Linia 161. zamknij nawias klamrowy. Linia 162. zamknij nawias klamrowy. Linia 163. zamknij nawias klamrowy. Linia 164. zamknij nawias klamrowy.
Ważne!

Zaimplementowany przez nas algorytm Cezara działa poprawnie jedynie dla wielkich liter alfabetu łacińskiego. Wynika to z faktu, że podczas szyfrowania wykorzystujemy kod ASCII. Każda litera dostępna w alfabecie posiada swój unikalny numer, który ją jednoznacznie identyfikuje. W naszej implementacji szyfrogram i tekst jawny zawierają jedynie litery o kodach ASCII z przedziału  65 ,   90 i właśnie w tym przedziale znajdują się wielkie litery alfabetu łacińskiego. Aby program działał dla tekstów złożonych zarówno z małych jak i wielkich liter, musiałby zmieniać tekst na wejściu, zamieniając litery małe na wielkie. Tak powstały tekst będzie mógł zostać zaszyfrowany naszym programem, jednak wynik złożony będzie jedynie z wielkich liter. Aby program szyfrował poprawnie tekst zawierający również małe litery, możemy go zmodyfikować w następujący sposób:

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public class Main otwórz nawias klamrowy. Linia 4. static final int zakresAlfabetu znak równości apostrof z apostrof minus apostrof a apostrof plus 1 średnik. Linia 5. static final int pierwszaMalaLitera znak równości apostrof a apostrof średnik. Linia 6. static final int pierwszaDuzaLitera znak równości apostrof A apostrof średnik. Linia 7. static final int ostatniaMalaLitera znak równości apostrof a apostrof plus zakresAlfabetu średnik prawy ukośnik prawy ukośnik wartosci numeryczne poczatku i konca. Linia 8. static final int ostatniaDuzaLitera znak równości apostrof A apostrof plus zakresAlfabetu średnik. Linia 9. static String szyfrujCezarem otwórz nawias okrągły String tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. String wynik znak równości cudzysłów cudzysłów średnik. Linia 11. int ruch średnik. Linia 12. klucz znak równości klucz procent zakresAlfabetu średnik. Linia 14. if otwórz nawias okrągły klucz zamknij nawias ostrokątny znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. if otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias ostrokątny znak równości ostatniaDuzaLitera ampersant ampersant tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz otwórz nawias ostrokątny znak równości pierwszaMalaLitera. Linia 17. kreska pionowa kreska pionowa tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias ostrokątny znak równości ostatniaMalaLitera zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. ruch znak równości otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias okrągły minus zakresAlfabetu średnik. Linia 19. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 20. ruch znak równości tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz średnik. Linia 21. zamknij nawias klamrowy. Linia 22. wynik plus znak równości otwórz nawias okrągły char zamknij nawias okrągły otwórz nawias okrągły ruch zamknij nawias okrągły średnik. Linia 23. zamknij nawias klamrowy. Linia 24. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 25. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 26. if otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz otwórz nawias ostrokątny pierwszaDuzaLitera kreska pionowa kreska pionowa. Linia 27. tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias ostrokątny ostatniaDuzaLitera ampersant ampersant tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz otwórz nawias ostrokątny pierwszaMalaLitera zamknij nawias okrągły otwórz nawias klamrowy. Linia 28. ruch znak równości otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz zamknij nawias okrągły plus zakresAlfabetu średnik. Linia 29. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 30. ruch znak równości tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły plus klucz średnik. Linia 31. zamknij nawias klamrowy. Linia 32. wynik plus znak równości otwórz nawias okrągły char zamknij nawias okrągły otwórz nawias okrągły ruch zamknij nawias okrągły średnik. Linia 33. zamknij nawias klamrowy. Linia 34. zamknij nawias klamrowy. Linia 35. return wynik średnik. Linia 36. zamknij nawias klamrowy. Linia 39. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 40. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 42. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj slowo do zaszyfrowania cudzysłów zamknij nawias okrągły średnik. Linia 43. String tekst znak równości scanner kropka next otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 44. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj wartość klucza szyfrującego cudzysłów zamknij nawias okrągły średnik. Linia 45. int klucz znak równości scanner kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 47. System kropka out kropka println otwórz nawias okrągły szyfrujCezarem otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 48. zamknij nawias klamrowy. Linia 49. zamknij nawias klamrowy.
Praca domowa

Przetestuj działanie programu, podając dowolne ciągi znaków oraz ustalając różne klucze szyfrujące. Zweryfikuj, czy program działa prawidłowo.