2014-11-26 5 views
0

Есть ли способ изменить этот код, чтобы он шифровал только буквы в верхнем регистре? Мне не нужно это делать в нижнем регистре или символах. Благодаря!Шифрование с использованием Caesar Cipher

public class CaesarCypher 
{ 
    public static final int MOVE_DOWN = 4; 
    public static void main(String [] args) 
    { 

     String plainText; 
     char character; 

     System.out.println("Enter sentence or word to Encrypt: "); 
     plainText = Console.readString(); 

     for (int iteration = 0 ; iteration < plainText.length() ; iteration++) 
     { 
      character = plainText.charAt(iteration); 
      if (character != ' ') 
      { 
       character = (char) ('a' + (character - 'a' + MOVE_DOWN) %26); 
      } 

      System.out.print(character); 
     } 


    } 
} 

ответ

1

Просто замените тест на отсутствие пробела испытанием на буквы верхнего регистра и «a» на «A».

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class CaesarCypher { 

    public static final int MOVE_DOWN = 4; 
    public static void main(String [] args) 
    { 

     String plainText = ""; 
     char character; 

     System.out.println("Enter sentence or word to Encrypt: "); 
     InputStreamReader converter = new InputStreamReader(System.in); 
     BufferedReader in = new BufferedReader(converter); 
     try{ 
      plainText = in.readLine(); 

      for (int iteration = 0 ; iteration < plainText.length() ; iteration++) 
      { 
       character = plainText.charAt(iteration); 
       if (character >='A' && character <= 'Z') 
       { 
        character = (char) ('A' + (character - 'A' + MOVE_DOWN) %26); 
       } 

       System.out.print(character); 
      } 
     } 
     catch (Exception e){ 
      System.err.println(e.getMessage()); 
     } 

    } 
} 
+0

Спасибо, что сработал! – owen95