Шифр Цезаря применяется индивидуально к каждой букве в строке. Каждая буква должна быть сдвинута вперед на n шагов в алфавите. Если буква смещается за конец алфавита («z»), то она смещается полностью назад к началу алфавита («a»). `
import java.util.*;
class question7{
public static void main (String[] args ){
String str = "";
//allowing program to take user input using the keyboard
Scanner kb = new Scanner(System.in);
Scanner s = new Scanner(System.in);
int n = 0;
System.out.println("increasing the letters in string by n");
while (true){
System.out.println("Please enter your string");
str = kb.nextLine();
System.out.println("Please enter your n value");
n = s.nextInt();
String incrementedword=new String();
for (int i=0;i<str.length();i++){
incrementedword+=(char)(str.charAt(i)+n);
}
System.out.println ("your word is "+incrementedword);
}
}
}
например, следующий ввод («hello world», 1) должен возвращать «ifmmp xpsme».
однако, когда я печатаю («hello world», 1), вывод «ifmmp!xpsme»
Что я делаю не так?
if
s:if (Character.isLetter(str.charAt(i))) {....}
- person Johnny Mopp   schedule 06.02.2018