package com.pr3.bsbo_08_19.TimofeyKondakov.task12;
import java.util.Scanner;
public class Task12 {
public static final String ALPH_LOWER = "abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
public static final String ALPH_UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
public void Ex12() {
// Реализовать для фрагмента текста шифрование Цезаря (каждый
// символ в тексте заменить символом, находящимся на некотором
// постоянном числе позиций левее или правее него в алфавите,
// например, в слове работа сдвиг на 1 даст “сбвпуб”).
Scanner in = new Scanner(System.in);
System.out.println("Enter text: ");
String str = in.nextLine();
System.out.println("Enter shift: ");
int offset = Integer.valueOf(in.nextLine());
var buffer = new StringBuilder();
for (var ch : str.toCharArray())
{
var alph = Character.isUpperCase(ch) ? ALPH_UPPER : ALPH_LOWER;
var alphLength = alph.length();
var indexOfChar = alph.indexOf(ch);
if (indexOfChar >= 0)
{
var newCharIndex = indexOfChar + offset;
if (newCharIndex < 0)
{
newCharIndex = alphLength + newCharIndex;
}
while (newCharIndex >= alphLength)
newCharIndex -= alphLength;
buffer.append(alph.charAt(newCharIndex));
}
else
{
buffer.append(ch);
}
}
System.out.println(buffer.toString());
}
}