Advertisement
mark79

Java Fundamentals - Man O War

Aug 19th, 2019
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class ManOWar {
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         int[] pirateShip = Arrays.stream(scanner.nextLine().split(">")).mapToInt(Integer::parseInt).toArray();
  9.         int[] warShip = Arrays.stream(scanner.nextLine().split(">")).mapToInt(Integer::parseInt).toArray();
  10.  
  11.         int maxHealthCapacity = Integer.parseInt(scanner.nextLine());
  12.  
  13.         String input = scanner.nextLine();
  14.         while (!input.equals("Retire")) {
  15.  
  16.             String[] tokens = input.split("\\s+");
  17.             String command = tokens[0];
  18.  
  19.             switch (command) {
  20.                 case "Fire": {
  21.                     int index = Integer.parseInt(tokens[1]);
  22.                     int damage = Integer.parseInt(tokens[2]);
  23.                     if (isIndexValid(index, warShip)) {
  24.                         if ((warShip[index] -= damage) <= 0) {
  25.                             System.out.println("You won! The enemy ship has sunken.");
  26.                             return;
  27.                         }
  28.                     }
  29.                 }
  30.                 break;
  31.                 case "Defend": {
  32.                     int startIndex = Integer.parseInt(tokens[1]);
  33.                     int endIndex = Integer.parseInt(tokens[2]);
  34.                     int damage = Integer.parseInt(tokens[3]);
  35.                     if (isIndexValid(startIndex, pirateShip) && isIndexValid(endIndex, pirateShip)) {
  36.                         for (int i = startIndex; i <= endIndex; i++) {
  37.                             if ((pirateShip[i] -= damage) <= 0) {
  38.                                 System.out.println("You lost! The pirate ship has sunken.");
  39.                                 return;
  40.                             }
  41.                         }
  42.                     }
  43.                 }
  44.                 break;
  45.                 case "Repair": {
  46.                     int index = Integer.parseInt(tokens[1]);
  47.                     int health = Integer.parseInt(tokens[2]);
  48.                     if (isIndexValid(index, pirateShip)) {
  49.                         pirateShip[index] = Math.min(maxHealthCapacity, pirateShip[index] + health);
  50.                     }
  51.                 }
  52.                 break;
  53.                 case "Status": {
  54.                     System.out.printf("%d sections need repair.%n",
  55.                             Arrays.stream(pirateShip).filter(section -> section < maxHealthCapacity * 0.20).count());
  56.                 }
  57.                 break;
  58.             }
  59.  
  60.             input = scanner.nextLine();
  61.         }
  62.  
  63.         System.out.printf("Pirate ship status: %d%n", Arrays.stream(pirateShip).sum());
  64.         System.out.printf("Warship status: %d%n", Arrays.stream(warShip).sum());
  65.     }
  66.  
  67.     private static boolean isIndexValid(int index, int[] ints) {
  68.         return index >= 0 && index < ints.length;
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement