Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Java Programming While out on a standard run we come across a strange planet that has a ship emitting an SOS beacon. We can't decipher

image text in transcribedimage text in transcribedimage text in transcribedimage text in transcribedimage text in transcribedimage text in transcribed

Java Programming

While out on a standard run we come across a strange planet that has a ship emitting an SOS beacon. We can't decipher much of their message, but we can tell that they are in trouble because they are on the emergency channel. Once we find the ship, we rescue the survivors and also clear their ship of anything of value - Afterall, us saving them isn't free! Once the survivors and equipment are on board we talk with them about their messaging system, and they explain that they are using a simple Caesar Cipher to encrypt their messages before they get sent out. With this system they can broadcast their cargo to their friends within listening range, letting them know what they have and that they are willing to trade. Being the pirates that we are, we immediately decide that we need to start scanning for these messages so that we can be sure to take down lucrative targets. After interrogating the survivors we also find out that their system is basic, and only uses a single value for the shift, but there are more advanced ships with different technologies. They are outlined here: Basic: Using Caesar Cipher with a static shift of 1-25. This is easy to decrypt as there are only 25 possibilities. Advanced: They use two different shift values, one for even index characters, and another value for the odd characters. Military Grade: They use a variable shift that starts at a certain value and increases by a second variable after encrypting each character. So the first character may be encrypted with a shift of 3, the second with a shift of 5 (3 + 2) and the third with 7 (3 + 2 + 2) and so on. We don't have any clue of these numbers ahead of time Items now have attributes such as Name, Weight, Value, Durability and ID. (Create an object called 'Item') We can carry an unlimited number of items, as long as they don't exceed the maximum weight of the cargo bay, 25 Tons. (Use an ArrayList that checks an item's weight before placing it in the cargo hold) We need to be able to add and remove items by their name. We need to be able to search for a specific type of item in our cargo bay based on the item's name and one of its attributes (Implement 2 searches - one on name and another on any attribute you choose). We need to be able to sort items by their names alphabetically in descending order (A-2) We need to know how many of each item we have in our cargo bay and display their attributes. We also need to be able to receive a message and decrypt it. The Basic and Advanced versions can print all possibilities to the screen. The Military Grade version must print only the correctly decrypted message to the screen. This method is worth 10 points, with the basic being worth 5, advanced worth 10, and military grade worth 15 (that's 5 bonus points!) Using the same code as assignment 2 you can make your changes. I have included some base code for your convenience (This is 2 classes, Assignment2 and Item) import java.util.ArrayList; import java.util.Scanner; public class Assignment03Driver { Scanner input = new Scanner(System.in); public static void main(String[] args) { new Assignment03Driver(); // This will act as our program switchboard public Assignment03Driver() { ArrayList cargohold = new ArrayList(); System.out.println("Welcome to the BlackStar Cargo Hold interface."); System.out.println("Please select a number from the options below"); System.out.println(""); while (true) { // Give the user a list of their options System.out.println("1: Add an item to the cargo hold."); System.out.println("2: Remove an item from the cargo hold."); System.out.println("3: Sort the contents of the cargo hold."); hold."); System.out.println("6: Perform a partial search for an item."); System.out.println("O: Exit the BlackStar Cargo Hold interface."); // Get the user input int userChoice = input.nextInt (); input.nextLine(); switch (userChoice) { case 1: addItem(cargohold); break; case 2: removeItem(cargohold); break; case 3: sortItems (cargohold); break; case 4: searchItems (cargohold); break; case 5: displayItems (cargohold); break; case 6: decodeMessage(); break; case 0: System.out.println("Thank you for using the BlackStar Cargo Hold interface. See you again soon!"); System.exit(0); private void addItem (ArrayList cargohold) { // TODO: Add an item that is specified by the user private void removeItem (ArrayList cargohold) { // TODO: Remove an item that is specified by the user private void sortItems (ArrayList cargohold) { // TODO: Sort the items in the cargo hold (No need to display them here) - Use Selection or Insertion sorts // NOTE: Special care is needed when dealing with strings research the compareTo() method with strings private void searchItems (ArrayList cargohold) { // TODO: Search for a user specified item private void displayItems (ArrayList cargohold) { // TODO: Display only the unique items along with a count of any duplicates // For example it should say // Food - 2 // Water - 3 // Ammunition - 5 private void decodeMessage() { // Decode a message that was received. While out on a standard run we come across a strange planet that has a ship emitting an SOS beacon. We can't decipher much of their message, but we can tell that they are in trouble because they are on the emergency channel. Once we find the ship, we rescue the survivors and also clear their ship of anything of value - Afterall, us saving them isn't free! Once the survivors and equipment are on board we talk with them about their messaging system, and they explain that they are using a simple Caesar Cipher to encrypt their messages before they get sent out. With this system they can broadcast their cargo to their friends within listening range, letting them know what they have and that they are willing to trade. Being the pirates that we are, we immediately decide that we need to start scanning for these messages so that we can be sure to take down lucrative targets. After interrogating the survivors we also find out that their system is basic, and only uses a single value for the shift, but there are more advanced ships with different technologies. They are outlined here: Basic: Using Caesar Cipher with a static shift of 1-25. This is easy to decrypt as there are only 25 possibilities. Advanced: They use two different shift values, one for even index characters, and another value for the odd characters. Military Grade: They use a variable shift that starts at a certain value and increases by a second variable after encrypting each character. So the first character may be encrypted with a shift of 3, the second with a shift of 5 (3 + 2) and the third with 7 (3 + 2 + 2) and so on. We don't have any clue of these numbers ahead of time Items now have attributes such as Name, Weight, Value, Durability and ID. (Create an object called 'Item') We can carry an unlimited number of items, as long as they don't exceed the maximum weight of the cargo bay, 25 Tons. (Use an ArrayList that checks an item's weight before placing it in the cargo hold) We need to be able to add and remove items by their name. We need to be able to search for a specific type of item in our cargo bay based on the item's name and one of its attributes (Implement 2 searches - one on name and another on any attribute you choose). We need to be able to sort items by their names alphabetically in descending order (A-2) We need to know how many of each item we have in our cargo bay and display their attributes. We also need to be able to receive a message and decrypt it. The Basic and Advanced versions can print all possibilities to the screen. The Military Grade version must print only the correctly decrypted message to the screen. This method is worth 10 points, with the basic being worth 5, advanced worth 10, and military grade worth 15 (that's 5 bonus points!) Using the same code as assignment 2 you can make your changes. I have included some base code for your convenience (This is 2 classes, Assignment2 and Item) import java.util.ArrayList; import java.util.Scanner; public class Assignment03Driver { Scanner input = new Scanner(System.in); public static void main(String[] args) { new Assignment03Driver(); // This will act as our program switchboard public Assignment03Driver() { ArrayList cargohold = new ArrayList(); System.out.println("Welcome to the BlackStar Cargo Hold interface."); System.out.println("Please select a number from the options below"); System.out.println(""); while (true) { // Give the user a list of their options System.out.println("1: Add an item to the cargo hold."); System.out.println("2: Remove an item from the cargo hold."); System.out.println("3: Sort the contents of the cargo hold."); hold."); System.out.println("6: Perform a partial search for an item."); System.out.println("O: Exit the BlackStar Cargo Hold interface."); // Get the user input int userChoice = input.nextInt (); input.nextLine(); switch (userChoice) { case 1: addItem(cargohold); break; case 2: removeItem(cargohold); break; case 3: sortItems (cargohold); break; case 4: searchItems (cargohold); break; case 5: displayItems (cargohold); break; case 6: decodeMessage(); break; case 0: System.out.println("Thank you for using the BlackStar Cargo Hold interface. See you again soon!"); System.exit(0); private void addItem (ArrayList cargohold) { // TODO: Add an item that is specified by the user private void removeItem (ArrayList cargohold) { // TODO: Remove an item that is specified by the user private void sortItems (ArrayList cargohold) { // TODO: Sort the items in the cargo hold (No need to display them here) - Use Selection or Insertion sorts // NOTE: Special care is needed when dealing with strings research the compareTo() method with strings private void searchItems (ArrayList cargohold) { // TODO: Search for a user specified item private void displayItems (ArrayList cargohold) { // TODO: Display only the unique items along with a count of any duplicates // For example it should say // Food - 2 // Water - 3 // Ammunition - 5 private void decodeMessage() { // Decode a message that was received

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Joe Celkos Data And Databases Concepts In Practice

Authors: Joe Celko

1st Edition

1558604324, 978-1558604322

More Books

Students also viewed these Databases questions