Overview
One of the problems that Julius Caesar faced while expanding the Roman Empire was communicating with his generals in a secure manner—so that someone else reading the messages would not be able to understand them but that his generals could. Caesar came up with the idea of encoding his messages by simply shifting each letter to the right in the alphabet. Caesar selected a shift amount (the Key) of 3. Thus, A becomes D, B becomes E, and so forth. Nonletters are left alone. To decode a message, the letters shift to the left by 3. So, F becomes C, G becomes D, and so on. In Caesar’s time, this kind of coding (called a substitution code) was essentially unknown. Caesar was able to communicate his battle plans securely. Note: Today this kind of encryption is far too easily broken to be used.
Implementation Notes
To implement a Caesar Cipher translation scheme in Java, you will need to acquire the Key to be used and the text string to be translated. You’ll need to access the characters in the String one-by-one. Use the String.charAt() method to do this. You’ll need to translate each letter using the Key, leaving nonletters alone. You can use the Character.isLetter() method to determine whether a given character is a letter. You’ll need to use exception handling to deal with the case of a nonnumeric Key.
The Key and the String should be on one line, as illustrated. Implement the heart of the program as a method, called “translate.” It should have the following declaration: public static String translate(String inText, int key)
Following is an example of a portion of what your program’s output might look like:
Input key <space> text: 0 AbCd
Translated: AbCd
Input key <space> text: 1 Testing, 1-2-3.
Translated: Uftujoh, 1-2-3.
Input key <space> text: -1 Uftujoh, 1-2-3.
Translated: Testing, 1-2-3.
Input key <space> text: X
Bad key. Not in -3..+3
Input key <space> text: 99
In this assignment, you will build a program that implements the Caesar Cipher algorithm. You must build a method called translate—public static String translate(String inText, int key)—that accepts the provided text and Key. It then uses the Caesar Cipher algorithm to translate inText into a String, called outText, which is what the method returns. If Key is greater than zero, then every character in inText is “shifted” to the right in the alphabet by Key characters. For example, if Key = 1, then “ABC” becomes “BCD.” If key is less than zero, then every character in inText is “shifted” to the left by Key characters. For example, if Key = –2, then “DEF” becomes “BCD.” The key value is guaranteed to be in the range –3..+3.
Translate must be a method with the header/signature shown above.
You also need to build a “driver”—it’s the main method—which does the following:
- It displays an appropriate title message.
- It repeatedly requests input: <key value=””> <input text=””>, the Key value is a (possibly signed) integer, followed by whitespace, followed by text through the end of the current line.
- It calls translate() to translate the text using the Key.
- It then displays the resulting text.
- It repeats steps 2–4 until a Key value > –3 or < –3 is encountered.
- Invalid Keys (nonnumeric) are dealt with using exception handling; the program then continues.
Complete the following steps to build a program that implements the Caesar Cipher algorithm.
- Build a translate method—public static String translate(String inText, int key)—that accepts the provided text and Key.
- Translate must be a method with the header/signature shown above.
- Build a driver method.
- Take sufficient screen shots to demonstrate that your program meets all requirements.
- Include the execution output of your program to convince a reader that it functions properly—both encoding and decoding messages.
- Test your program with both positive and negative Key values and text strings containing both alphabetic and nonalphabetic characters.
- Paste these screen shots into an MS Word document.
- For your final test, you use must use the following input: “–3 Zh, wkh 42 shrsoh, ri wkh . . .”
- Create a .zip file containing your NetBeans Caesar Cipher project.
- Before zipping your project, right-click the project and “clean” it. This greatly reduces the file size and speeds up the program’s performance.
- Then close NetBeans.
- Add the MS Word document with your screenshots to your .zip file.
- Submit your cleaned Caesar Cipher project in an appropriately constructed and correctly named .zip file.
- Name your .zip file following this pattern: LastName_Week1.zip.