Write a program that produces a Caesar cipher of a given message string. A Caesar cipher is formed by rotating each letter of a message by a given amount. For example, if your rotate by 3, every A becomes D; every B becomes E; and so on. Toward the end of the alphabet, you wrap around: X becomes A; Y becomes B; and Z becomes C. Your program should prompt for a message and an amount by which to rotate each letter and should output the encoded message.

Respuesta :

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.

Ver imagen mahamnasir
Ver imagen mahamnasir

In this exercise we have to use the computer language knowledge in JAVA to write the code as:

the code is in the attached image.

In a more easy way we have that the code will be:

import java.util.Scanner;

public class Main {  

  public static void main(String args[]) {

      Scanner input = new Scanner(System.in);

      System.out.println("Enter the message : ");

      String message = input.nextLine();  

      System.out.println("Enter the amount by which by which to rotate each letter : ");  

      int rotate = input.nextInt();  

      String encoded_m = "";  

     char letter;  

      for(int i=0; i < message.length();i++)  {

          letter = message.charAt(i);

          if(letter >= 'a' && letter <= 'z')  {  

           letter = (char) (letter + rotate);  

           if(letter > 'z') {  

              letter = (char) (letter+'a'-'z'-1); }

           encoded_m = encoded_m + letter;}  

          else if(letter >= 'A' && letter <= 'Z') {

           letter = (char) (letter + rotate);  

           if(letter > 'Z') {  

               letter = (char) (letter+'A'-'Z'-1);}

           encoded_m = encoded_m + letter;}  

          else {  

        encoded_m = encoded_m + letter;  } }

System.out.println("Encoded message : " + encoded_m.toUpperCase());  }}

See more about JAVA at brainly.com/question/2266606

Ver imagen lhmarianateixeira