Comments are REQUIRED; flow charts and Pseudocode are NOT REQUIRED. Directions T
ID: 3626879 • Letter: C
Question
Comments are REQUIRED; flow charts and Pseudocode are NOT REQUIRED.
Directions
The file must be called
Example: KenDeweyProg3.java
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 Style 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 left would become HDVWHU
HWVDHU shifted by 3 to right would become EASTER
This is how the early Caesar Cipher worked.
YourNameProg3.java
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 buy 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
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
BXPQBO
Please enter text to decrypt
bxpqbo
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
QEFPFPXQBPQ
Please enter text to decrypt
qefpfpxqbpq
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
EBIIL
Please enter text to decrypt
ebiil
Please enter shift value
5
ZWDDG
Press any key to continue . . .
Explanation / Answer
import java.util.*;
public class KenDeweyProg3
{
public static void main(String[] args)
{
// keyboard input
Scanner kb = new Scanner(System.in);
// prompt for input
System.out.println("Please enter text to encrypt");
String word = kb.nextLine();
System.out.println("Please enter shift value");
int shift = kb.nextInt();
kb.nextLine();
System.out.println(encrypt(word, shift));
// decryption phase
System.out.println("Please enter text to decrypt");
word = kb.nextLine();
System.out.println("Please enter shift value");
shift = kb.nextInt();
kb.nextLine();
System.out.println(encrypt(word, shift));
}
/**
* Encrypts the parameter with the given shift
*/
public static String encrypt(String word, int shift)
{
String output = "";
// convert to upper case
word = word.toUpperCase();
for(char c : word.toCharArray())
// only encrypt letters
if(Character.isLetter(c))
output += (char)('A'+(c-'A'-shift+26)%26);
else
output += c;
return output;
}
}