Question: Hello, the question below is in bold and Italic. The base code that goes with it is below. I have also included the previous completed

Hello, the question below is in bold and Italic. The base code that goes with it is below. I have also included the previous completed java code for which this code is built off of. I've added my completed java code for part 2. The question below builds off that problem.

While out on a standard run we come across a strange planet that has a ship emitting an SOS beacon. We decide to proceed, not to help any survivors but to search for items. After our descent we find a crashed ship with a full cargo hold! We decide to take the time to empty their cargo hold and search through all of the items to determine what to take. We notice that they dont store their items in the same boxes that we do, but rather have a system that creates specific size boxes for each item. This means that they can store 200 items if they are light enough, or 1 large heavy item (Remember, weight matters when trying to leave a planet!).

While you continue doing the grunt work of unloading the ship I head back to our ship to try and update it with the same features as the newly discovered, but wrecked, ship. I get started as you finish unloading and reloading everything, so I head out to search for survivors while you finish the upgrades.

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 dont exceed the maximum weight of the cargo bay, 25 Tons. (Use an ArrayList that checks an items 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 items 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-Z)

We need to know how many of each item we have in our cargo bay and display their attributes.

We must also add a partial search (think of this as a filter option).

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 Assignment01Driver();

}

// 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.");

System.out.println("4: Search for an item.");

System.out.println("5: Display the items in the cargo hold.");

System.out.println("6: Perform a partial search for an item.");

System.out.println("0: 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:

partialSearch(cargohold);

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 partialSearch(ArrayList cargohold) {

// Search for an item based on a partial name

}

}

// This item class should be stored in its own file.

public class Item {

// Declare attributes here

public Item(){

}

// Create an overridden constructor here

// Create accessors and mutators for your traits

}

PART 2: Completed code. Problem above is based on this code partially.

import java.util.*;

public class Assignment_2A_Final{ Scanner input = new Scanner(System.in); public static void main(String[] args){ new Assignment_2A_Final (); } public Assignment_2A_Final (){ String[] cargoArray = new String[10]; 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){ System.out.println("1: Add an item to the cargo hold."); System.out.println("2: Remove an item from the carg hold."); System.out.println("3: Sort the contents of the cargo hold."); System.out.println("4: Search for an item."); System.out.println("5: Display the items in the cargo hold."); System.out.println("0:Exit the BlackStar Cargo Hold interface ."); int userInt = input.nextInt(); input.nextLine(); switch(userInt){ case 1: addItem(cargoArray); break; case 2: removeItem(cargoArray); break; case 3: sortItems(cargoArray); break; case 4: searchItems(cargoArray); break; case 5: displayItems(cargoArray); break; case 0: System.out.println("Thank you for using the cargo array portal"); System.exit(0); default: System.out.println("Invalid input"); break; } } }

private void addItem(String cargoArray[]) { System.out.print("Please enter the name of your Item: "); String ItemName = input.nextLine(); ItemName = ItemName.substring(0, 1).toUpperCase()+ItemName.substring(1); for(int x = 0; x < cargoArray.length; x++) { if(cargoArray[x] == null) { cargoArray[x] = ItemName; break; } else if((x == cargoArray.length-1) && cargoArray[x] != null) { System.out.println("Sorry, there is an error. The cargo hold is all full!"); System.out.println(); System.out.println(); } } }

private void removeItem(String cargoArray[]) { System.out.print("Please enter the name of the item you would like to remove: "); String delete = input.nextLine(); delete = delete.substring(0, 1).toUpperCase()+delete.substring(1); System.out.println(); boolean found = false; for(int x = 0; x < cargoArray.length; x++) { if(delete.equalsIgnoreCase(cargoArray[x])) { cargoArray[x] = null; found = true; } } if(found) { System.out.println(delete+" has been removed"); System.out.println(); System.out.println(); } else { System.out.println("Your item has not been found"); System.out.println(); System.out.println(); } }

private void sortItems(String cargoArray[]) { for(int i = 0; i < cargoArray.length; i++) { if(cargoArray[i] == null) break; for(int j = i+1; j < cargoArray.length; j++) { if(cargoArray[j] != null && cargoArray[i] != null){ if(cargoArray[j].compareToIgnoreCase(cargoArray[i])<0) { String temp = cargoArray[i]; cargoArray[i] = cargoArray[j]; cargoArray[j] = temp; } } } } System.out.println("Your items have been sorted"); System.out.println(); System.out.println(); }

private void searchItems(String cargoArray[]) { System.out.print("Please enter the item you would like to find: "); String userItem = input.nextLine(); userItem = userItem.substring(0, 1).toUpperCase()+userItem.substring(1); System.out.println(); boolean found = false; int count = 0; for(int index = 0; index < cargoArray.length; index++) { if(userItem.equalsIgnoreCase(cargoArray[index])) { found = true; count += 1; } } if(found) { System.out.println("We have found "+count+" "+userItem); } else { System.out.println("I'm sorry, we could not find "+userItem); } System.out.println(); System.out.println(); }

private void displayItems(String cargoArray[]) { boolean [] checked = new boolean[cargoArray.length]; for(int x = 0; x < cargoArray.length; x++) { int count = 0; if(cargoArray[x] == null) { break; } for(int j = x; j < cargoArray.length; j++) if(cargoArray[j] != null) if(cargoArray[j].equalsIgnoreCase(cargoArray[x])) { count ++; if(j!=x) checked[j] = true; } if(!checked[x]) System.out.println(cargoArray[x]+" - "+count); } System.out.println(); }

public class Item { private String Name; private Double Weight; private String Value; private String Durability; private String ID;

public Item(){

} public String getName(){ return Name; } public void setName (String Name) { this.Name = Name; } public Double getWeight(){ return Weight; } public void setWeight(Double Weight) { this.Weight = Weight; } public String getValue(){ return Value; } public void setValue(String Value) { this.Value = Value; } public String getDurability(){ return Durability; } public void setDurability (String Durability) { this.Durability = Durability; } public String getID(){ return ID; } public void setID (String ID) { this.ID= ID; } } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!