Advertisement
ivanmitkoff

ManOWar_with_Array/MidExamRetake6August2019

Nov 1st, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.33 KB | None | 0 0
  1. package PastMidExams.MidExamRetake6August2019;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class ManOWarArray {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         int[] pirateShip = Arrays.stream(scanner.nextLine().split(">")).mapToInt(e -> Integer.parseInt(e)).toArray();
  11.         int[] warShip = Arrays.stream(scanner.nextLine().split(">")).mapToInt(e -> Integer.parseInt(e)).toArray();
  12.  
  13.         int maxHealth = Integer.parseInt(scanner.nextLine());
  14.  
  15.         String command = scanner.nextLine();
  16.  
  17.         while(!command.equals("Retire")) {
  18.             String[] tokens = command.split(" ");
  19.  
  20.             int damagePoints = 0;
  21.  
  22.             switch (tokens[0]) {
  23.                 case "Fire":
  24.                     int indexToDamage = Integer.parseInt(tokens[1]);
  25.                     damagePoints = Integer.parseInt(tokens[2]);
  26.  
  27.                     if (indexToDamage >= 0 && indexToDamage < warShip.length) {
  28.                         warShip[indexToDamage] -= damagePoints;
  29.  
  30.                         if (warShip[indexToDamage] <= 0) {
  31.                             System.out.println("You won! The enemy ship has sunken.");
  32.                             return;
  33.                         }
  34.                     }
  35.                     break;
  36.                 case "Defend":
  37.                     int startIndex = Integer.parseInt(tokens[1]);
  38.                     int endIndex = Integer.parseInt(tokens[2]);
  39.                     damagePoints = Integer.parseInt(tokens[3]);
  40.  
  41.                     if (startIndex >= 0 && endIndex >= startIndex && endIndex <= pirateShip.length) {
  42.                         for (int i = startIndex; i <= endIndex; i++) {
  43.                             pirateShip[i] -= damagePoints;
  44.  
  45.                             if (pirateShip[i] <= 0) {
  46.                                 System.out.println("You lost! The pirate ship has sunken.");
  47.                                 return;
  48.                             }
  49.                         }
  50.                     }
  51.                     break;
  52.                 case "Repair":
  53.                     int indexToRepair = Integer.parseInt(tokens[1]);
  54.                     int health = Integer.parseInt(tokens[2]);
  55.  
  56.                     if (indexToRepair >= 0 && indexToRepair < pirateShip.length) {
  57.  
  58.                         if (pirateShip[indexToRepair] + health < maxHealth) {
  59.                             pirateShip[indexToRepair] += health;
  60.                         } else {
  61.                             pirateShip[indexToRepair] = maxHealth;
  62.                         }
  63.                     }
  64.                     break;
  65.                 case "Status":
  66.                     int counter = 0;
  67.                     for (int i = 0; i < pirateShip.length; i++) {
  68.                         if (pirateShip[i] < (0.2 * maxHealth)) {
  69.                             counter++;
  70.                         }
  71.                     }
  72.                     System.out.printf("%d sections need repair.%n", counter);
  73.                     break;
  74.             }
  75.             command = scanner.nextLine();
  76.         }
  77.         int pirateShipSum = Arrays.stream(pirateShip).sum();
  78.         int warShipSum = Arrays.stream(warShip).sum();
  79.         System.out.printf("Pirate ship status: %d%n", pirateShipSum);
  80.         System.out.printf("Warship status: %d%n", warShipSum);
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement