/*Java program to simulate a Droid that can activate, hover, print a systems report, and be charged*/
import java.util.HashMap;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Droid {
//declare integer for battery level
static int batteryLevel;
//set battery level to 100%
public Droid() {
batteryLevel = 100;
}
//method to activate Droid
public void activate() {
System.out.println("Activated. How can I help you?");
batteryLevel = batteryLevel - 5;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
//method to print out systems report
public void systemsReport(HashMap<String, Boolean> systemsData)
{
if (systemsData.size() < 1)
{
System.out.println("\nError! You haven't given me systems data.\n");
}
else
{
System.out.println("\nSYSTEMS REPORT");
for (String system : systemsData.keySet())
{
if (systemsData.get(system) == true )
{
System.out.println(system + ": Online");
}
else
{
System.out.println(system + ": Offline");
}
}
batteryLevel = batteryLevel - 5;
if (batteryLevel < 0)
{
batteryLevel = 0;
}
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to charge battery up to 100% max
public void chargeBattery(int hours) {
System.out.println("Droid charging...");
batteryLevel = batteryLevel + hours;
if (batteryLevel > 100)
{
batteryLevel = 100;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
else {
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to print out battery level for user
public static int checkBatteryLevel() {
return batteryLevel;
}
//method to hover droid
public void hover(int feet) {
if (feet > 2) {
System.out.println("Error! I cannot hover above 2 feet\n");
}
else {
System.out.println("Hovering...");
batteryLevel = batteryLevel - 20;
if (batteryLevel < 0)
{
batteryLevel = 0;
}
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to fire laser
public void laser(int power, int direction)
{
if (power > 100)
{
System.out.println("Error! laser cannot be powered over 100\n");
}
else if (power > batteryLevel)
{
System.out.println("Error! laser cannot be powered above battery level\n");
}
else
{
if (direction > 360)
{
System.out.println("Error! please choose a valid angle at which to fire the laser\n");
}
else
{
System.out.println("Pew! fired laser at " + power + "% power at " + direction + " degrees!\n");
batteryLevel = batteryLevel - power;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
}
//main method to create Droid object and call methods
public static void main(String[] args) throws IOException {
boolean droidActivated = true;
Droid droid = new Droid();
droid.activate();
HashMap<String, Boolean> droidSystems = new HashMap<String, Boolean>();
droidSystems.put("Laser Turret", true);
droidSystems.put("Hover Booster", true);
droidSystems.put("Wheels", false);
droidSystems.put("Visibility Lights", false);
while(droidActivated == true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("'CB' - Charge battery\n'H' - Hover\n'L' - Laser\n'SR' - Systems report\n\n Please enter a command: ");
String s = br.readLine();
switch (s) {
case "CB": System.out.print("How many minutes? ");
try {
int h = Integer.parseInt(br.readLine());
droid.chargeBattery(h);
}
catch(NumberFormatException nfe) {
System.err.println("Invalid Format!");
}
break;
case "H": System.out.print("How many feet? ");
try {
int f = Integer.parseInt(br.readLine());
droid.hover(f);
}
catch(NumberFormatException nfe) {
System.err.println("Invalid Format!");
}
break;
case "L": System.out.print("At what power (%)? ");
try {
int p = Integer.parseInt(br.readLine());
System.out.print("In what direction (degrees)? ");
int d = Integer.parseInt(br.readLine());
droid.laser(p, d);
}
catch(NumberFormatException nfe){
System.err.println("Invalid Format!\n");
}
break;
case "SR": droid.systemsReport(droidSystems);
break;
default:
System.err.println("Invalid Format!\n");
break;
}
if (checkBatteryLevel() <= 0)
{
droidActivated = false;
}
}
System.out.print("Droid Battery expired. Logging user off.\n\nThank you for using the droid.\n\n");
}
}
import java.util.HashMap;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Droid {
//declare integer for battery level
static int batteryLevel;
//set battery level to 100%
public Droid() {
batteryLevel = 100;
}
//method to activate Droid
public void activate() {
System.out.println("Activated. How can I help you?");
batteryLevel = batteryLevel - 5;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
//method to print out systems report
public void systemsReport(HashMap<String, Boolean> systemsData)
{
if (systemsData.size() < 1)
{
System.out.println("\nError! You haven't given me systems data.\n");
}
else
{
System.out.println("\nSYSTEMS REPORT");
for (String system : systemsData.keySet())
{
if (systemsData.get(system) == true )
{
System.out.println(system + ": Online");
}
else
{
System.out.println(system + ": Offline");
}
}
batteryLevel = batteryLevel - 5;
if (batteryLevel < 0)
{
batteryLevel = 0;
}
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to charge battery up to 100% max
public void chargeBattery(int hours) {
System.out.println("Droid charging...");
batteryLevel = batteryLevel + hours;
if (batteryLevel > 100)
{
batteryLevel = 100;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
else {
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to print out battery level for user
public static int checkBatteryLevel() {
return batteryLevel;
}
//method to hover droid
public void hover(int feet) {
if (feet > 2) {
System.out.println("Error! I cannot hover above 2 feet\n");
}
else {
System.out.println("Hovering...");
batteryLevel = batteryLevel - 20;
if (batteryLevel < 0)
{
batteryLevel = 0;
}
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
//method to fire laser
public void laser(int power, int direction)
{
if (power > 100)
{
System.out.println("Error! laser cannot be powered over 100\n");
}
else if (power > batteryLevel)
{
System.out.println("Error! laser cannot be powered above battery level\n");
}
else
{
if (direction > 360)
{
System.out.println("Error! please choose a valid angle at which to fire the laser\n");
}
else
{
System.out.println("Pew! fired laser at " + power + "% power at " + direction + " degrees!\n");
batteryLevel = batteryLevel - power;
System.out.println("Battery level is: " + batteryLevel + " percent\n");
}
}
}
//main method to create Droid object and call methods
public static void main(String[] args) throws IOException {
boolean droidActivated = true;
Droid droid = new Droid();
droid.activate();
HashMap<String, Boolean> droidSystems = new HashMap<String, Boolean>();
droidSystems.put("Laser Turret", true);
droidSystems.put("Hover Booster", true);
droidSystems.put("Wheels", false);
droidSystems.put("Visibility Lights", false);
while(droidActivated == true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("'CB' - Charge battery\n'H' - Hover\n'L' - Laser\n'SR' - Systems report\n\n Please enter a command: ");
String s = br.readLine();
switch (s) {
case "CB": System.out.print("How many minutes? ");
try {
int h = Integer.parseInt(br.readLine());
droid.chargeBattery(h);
}
catch(NumberFormatException nfe) {
System.err.println("Invalid Format!");
}
break;
case "H": System.out.print("How many feet? ");
try {
int f = Integer.parseInt(br.readLine());
droid.hover(f);
}
catch(NumberFormatException nfe) {
System.err.println("Invalid Format!");
}
break;
case "L": System.out.print("At what power (%)? ");
try {
int p = Integer.parseInt(br.readLine());
System.out.print("In what direction (degrees)? ");
int d = Integer.parseInt(br.readLine());
droid.laser(p, d);
}
catch(NumberFormatException nfe){
System.err.println("Invalid Format!\n");
}
break;
case "SR": droid.systemsReport(droidSystems);
break;
default:
System.err.println("Invalid Format!\n");
break;
}
if (checkBatteryLevel() <= 0)
{
droidActivated = false;
}
}
System.out.print("Droid Battery expired. Logging user off.\n\nThank you for using the droid.\n\n");
}
}
//program to add items to a number of data types in the Java Collections Framework and time how long each data type takes.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class App {
public static void main(String[] args) {
//////////////// LISTS ///////////////////////////////////
//ArrayLists manage arrays internally,
// [0][1][2][3][4][5] ....
List<Integer> arrayList = new ArrayList<Integer>();
// LinkedLists consist of elements where each element
// has a reference to the previous and next element
// [0]->[1]->[2] ....
// <- <-
List<Integer> linkedList = new LinkedList<Integer>();
doTimingsList("ArrayList", arrayList);
doTimingsList("LinkedList", linkedList);
//////////////// SETS ///////////////////////////////////
// Only store unique values
// Great for removing duplicates
// Not indexed, unlike lists
// Very fast to check if a particular object exists
// If you want to use your own objects, you must implement hashCode() and equals().
//HashSet is not ordered.
Set<Integer> set1 = new HashSet<Integer>();
// Sorted in natural order - must implement Comparable for custom types
// (1,2,3 ..., a,b,c.... etc)
Set<Integer> set2 = new TreeSet<Integer>();
// Elements remain in order they were added
Set<Integer> set3 = new LinkedHashSet<Integer>();
doTimingsSet("HashSet", set1);
doTimingsSet("TreeSet", set2);
doTimingsSet("LinkedHashSet", set3);
//////////////// MAPS ///////////////////////////////////
// Key value pairs.
// Like lookup tables
// Retrieving a value by key is fast
// Iterating over map values is very slow
// Maps not really optimised for iteration
// If you want to use your own objects as keys, you must implement hashCode() and equals().
// Keys not in any particular order, and order liable to change.
Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();
// Keys sorted in natural order - must implement Comparable for custom types
Map<Integer, Integer> map2 = new TreeMap<Integer, Integer>();
// Keys remain in order added
Map<Integer, Integer> map3 = new LinkedHashMap<Integer, Integer>();
doTimingsMaps("HashMap", map1);
doTimingsMaps("TreeMap", map2);
doTimingsMaps("LinkedHashMap", map3);
}
//methods to find timings of each data collection type
private static void doTimingsList(String type, List<Integer> list) {
for(int i=0; i<1E5; i++) {
list.add(i);
}
long start = System.currentTimeMillis();
//add items to list
for(int i=0; i<1E5; i++) {
list.add(list.size(), i);
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
private static void doTimingsSet(String type, Set<Integer> set) {
for(int i=0; i<1E5; i++) {
set.add(i);
}
long start = System.currentTimeMillis();
//add items to set
for(int i=0; i<1E5; i++) {
set.add(set.size());
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
private static void doTimingsMaps(String type, Map<Integer, Integer> map) {
long start = System.currentTimeMillis();
//add items to map
for(int i=0; i<1E5; i++) {
map.put(map.size(), i);
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class App {
public static void main(String[] args) {
//////////////// LISTS ///////////////////////////////////
//ArrayLists manage arrays internally,
// [0][1][2][3][4][5] ....
List<Integer> arrayList = new ArrayList<Integer>();
// LinkedLists consist of elements where each element
// has a reference to the previous and next element
// [0]->[1]->[2] ....
// <- <-
List<Integer> linkedList = new LinkedList<Integer>();
doTimingsList("ArrayList", arrayList);
doTimingsList("LinkedList", linkedList);
//////////////// SETS ///////////////////////////////////
// Only store unique values
// Great for removing duplicates
// Not indexed, unlike lists
// Very fast to check if a particular object exists
// If you want to use your own objects, you must implement hashCode() and equals().
//HashSet is not ordered.
Set<Integer> set1 = new HashSet<Integer>();
// Sorted in natural order - must implement Comparable for custom types
// (1,2,3 ..., a,b,c.... etc)
Set<Integer> set2 = new TreeSet<Integer>();
// Elements remain in order they were added
Set<Integer> set3 = new LinkedHashSet<Integer>();
doTimingsSet("HashSet", set1);
doTimingsSet("TreeSet", set2);
doTimingsSet("LinkedHashSet", set3);
//////////////// MAPS ///////////////////////////////////
// Key value pairs.
// Like lookup tables
// Retrieving a value by key is fast
// Iterating over map values is very slow
// Maps not really optimised for iteration
// If you want to use your own objects as keys, you must implement hashCode() and equals().
// Keys not in any particular order, and order liable to change.
Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();
// Keys sorted in natural order - must implement Comparable for custom types
Map<Integer, Integer> map2 = new TreeMap<Integer, Integer>();
// Keys remain in order added
Map<Integer, Integer> map3 = new LinkedHashMap<Integer, Integer>();
doTimingsMaps("HashMap", map1);
doTimingsMaps("TreeMap", map2);
doTimingsMaps("LinkedHashMap", map3);
}
//methods to find timings of each data collection type
private static void doTimingsList(String type, List<Integer> list) {
for(int i=0; i<1E5; i++) {
list.add(i);
}
long start = System.currentTimeMillis();
//add items to list
for(int i=0; i<1E5; i++) {
list.add(list.size(), i);
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
private static void doTimingsSet(String type, Set<Integer> set) {
for(int i=0; i<1E5; i++) {
set.add(i);
}
long start = System.currentTimeMillis();
//add items to set
for(int i=0; i<1E5; i++) {
set.add(set.size());
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
private static void doTimingsMaps(String type, Map<Integer, Integer> map) {
long start = System.currentTimeMillis();
//add items to map
for(int i=0; i<1E5; i++) {
map.put(map.size(), i);
}
long end = System.currentTimeMillis();
System.out.println("Time taken:" + (end - start) + " ms for " + type);
}
}