Answer:
Here is the JAVA program that produces Caeser cipher o given message string:
import java.util.Scanner; //to accept input from user
public class Main {
public static void main(String args[]) { //start of main function
Scanner input = new Scanner(System.in); //creates object of Scanner
System.out.println("Enter the message : "); //prompts user to enter a plaintext (message)
String message = input.nextLine(); //reads the input message
System.out.println("Enter the amount by which by which to rotate each letter : "); //prompts user to enter value of shift to rotate each character according to shift
int rotate = input.nextInt(); // reads the amount to rotate from user
String encoded_m = ""; // to store the cipher text
char letter; // to store the character
for(int i=0; i < message.length();i++) { // iterates through the message string until the length of the message string is reached
letter = message.charAt(i); // method charAt() returns the character at index i in a message and stores it to letter variable
if(letter >= 'a' && letter <= 'z') { //if letter is between small a and z
letter = (char) (letter + rotate); //shift/rotate the letter
if(letter > 'z') { //if letter is greater than lower case z
letter = (char) (letter+'a'-'z'-1); } // re-rotate to starting position
encoded_m = encoded_m + letter;} //compute the cipher text by adding the letter to the the encoded message
else if(letter >= 'A' && letter <= 'Z') { //if letter is between capital A and Z
letter = (char) (letter + rotate); //shift letter
if(letter > 'Z') { //if letter is greater than upper case Z
letter = (char) (letter+'A'-'Z'-1);} // re-rotate to starting position
encoded_m = encoded_m + letter;} //computes encoded message
else {
encoded_m = encoded_m + letter; } } //computes encoded message
System.out.println("Encoded message : " + encoded_m.toUpperCase()); }} //displays the cipher text (encoded message) in upper case letters
Explanation:
The program prompts the user to enter a message. This is a plaintext. Next the program prompts the user to enter an amount by which to rotate each letter. This is basically the value of shift. Next the program has a for loop that iterates through each character of the message string. At each iteration it uses charAt() which returns the character of message string at i-th index. This character is checked by if condition which checks if the character/letter is an upper or lowercase letter. Next the statement letter = (char) (letter + rotate); is used to shift the letter up to the value of rotate and store it in letter variable. This letter is then added to the variable encoded_m. At each iteration the same procedure is repeated. After the loop breaks, the statement System.out.println("Encoded message : " + encoded_m.toUpperCase()); displays the entire cipher text stored in encoded_m in uppercase letters on the output screen.
The logic of the program is explained here with an example in the attached document.