Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Provide a complete program that performs a simple substitution cipher. The progr

ID: 638776 • Letter: P

Question

Provide a complete program that performs a simple substitution cipher. The program should take plain text and a shift value and produce the encrypted text. Then it should take encrypted text and a shift value and produce the plain text once again. A different encrypted text and shift can be entered so make sure to get input.


Directions
Points

The file must be called


Ensure you include ALL files required to make your program compile and run. I would like to see
your .java files only.

Proper coding conventions required the first letter of the class start with a capital letter and
the first letter of each additional word start with a capital letter.

Style Requirements

Refer to the Java Coding Conventions Document. Add comments as required for all .java files.

Overall Requirements

Provide a complete program that performs a simple substitution cipher. The program should take
plain text and a shift value and produce the encrypted text. Then it
should take encrypted text and a shift value and produce the plain text once again. A
different encrypted text and shift can be entered so make sure to get input.

Example:
EASTER shifted by 3 to right would become HDVWHU HDVWHU shifted by 3 to left would become EASTER

Provide a main method. It should:

? Get input for a string and a shift value
? Convert to upper case
? Only perform the following items on alphabetic characters between A and Z
? Utilize a for loop which uses postfix incrementing operator
o Convert character to its ASCII equivalent (type cast)
o Shift by shift value entered above
? If you reach end of alphabet, wrap around
? Example: A shifted to the left 2 would become Y
o Convert back to its character equivalent (type cast)
o Output the new character
? Get input for a string and a shift value
? Perform same steps above to convert the encrypted text back to plain text
? Be sure to get input again as a different encrypted text may be entered
? Main method can call separate method to perform encryption/decryption but not required.

Utilize postfix increment/decrement operations and compound assignment operators for all math.

Example: x++ or x+=2.

Mimic the sample session precisely.

Sample Session:

Please enter text to encrypt easter
Please enter shift value
3
HDVWHU
Please enter text to decrypt
hdvwhu
Please enter shift value
-3
EASTER
Press any key to continue . . .

Sample Session 2: : (Notice spaces removed from input)


Please enter text to encrypt
This Is A Test
Please enter shift value
3
WKLVLVDWHVW
Please enter text to decrypt

WKLVLVDWHVW

Please enter shift value
-3
THISISATEST
Press any key to continue . . .

Sample Session 3: (Notice the different shift and decrypt value)

Please enter text to encrypt hello
Please enter shift value
3
KHOOR
Please enter text to decrypt
khoor
Please enter shift value
-5
FCJJM
Press any key to continue . . .

The following program works great but it counts in the wrong direction. The first output is BXPQBO and it should be HDVWHU

import java.util.*;

public class YourNameChapter12

{

public static void main(String[] args)

{String message,newmessage="";

char a;

int i,b,shift;

Scanner in=new Scanner(System.in);

System.out.println("Please enter text to encrypt ");

message=in.nextLine();

message=message.toUpperCase();

System.out.println("Please enter shift value ");

shift=in.nextInt();

in.nextLine();

if(shift>0)

newmessage=positive(message,shift);

else

newmessage=negative(message,shift);

System.out.println(newmessage);

newmessage="";

System.out.println("Please enter text to decrypt ");

message=in.nextLine();

message=message.toUpperCase();

System.out.println("Please enter shift value ");

shift=in.nextInt();

in.nextLine();

if(shift>0)

newmessage=positive(message,shift);

else

newmessage=negative(message,shift);

System.out.println(newmessage);

}

public static String positive(String message, int shift)

{int i,b;

String newmessage="";

for(i=0;i

{if(message.charAt(i)!=' ')

{

b=(int)message.charAt(i)-shift;

if(b<65)

b+=26;

newmessage+=(char)b;

}

}

return newmessage;

}

public static String negative(String message, int shift)

{int i,b;

String newmessage="";

for(i=0;i

{if(message.charAt(i)!=' ')

{

b=(int)message.charAt(i)-shift;

if(b>90)

b-=26;

newmessage+=(char)b;

}

}

return newmessage;

}

}

Explanation / Answer

import java.util.*; public class JRCamanaProg3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); String encryptText; //text to encrypt int shiftValue; //number of spaces to shift String decryptText; //text to decrypt //User enters text to encrypt System.out.println("Please enter text to encrypt"); encryptText = stdIn.nextLine(); //User enters shift value System.out.println("Please enter shift value"); shiftValue = stdIn.nextInt(); //System returns encrypted string String encryptedText = encrypt(encryptText , shiftValue); // text that has been encrypted System.out.println(encryptedText); //User enters text to decrypt System.out.println("Please enter text to decrypt"); decryptText = stdIn.nextLine(); //User enters shift value System.out.println("Please enter shift value"); shiftValue = stdIn.nextInt(); //System returns decrypted string String decryptedText = decrypt(decryptText , shiftValue); // text that has been decrypted System.out.println(decryptedText); } //Shift and manipulate characters public static String shift(String enteredText, int shiftValue) { String convertedText = ""; for(int i = 0; i
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote