Задача уже решена, но не дает успокоиться. Вот фрагмент №1:
public static void doMove(AbstractRobot robotFirst, AbstractRobot robotSecond) {
        BodyPart attacked = robotFirst.attack();
        BodyPart defenced = robotFirst.defense();
        System.out.println(String.format("%s атаковал робота %s, атакована %s, защищена %s",
                robotFirst.getName(), robotSecond.getName(), attacked, defenced));
    }
Если придерживаться текстовочки из System.out.println, то первый робот атакует, а второй защищается, тогда почему у нас:
BodyPart attacked = robotFirst.attack();
BodyPart defenced = robotFirst.defense();
а не так (если, например, атакует рука первого робота и защищается рука второго робота)
BodyPart attacked = robotFirst.attack();
BodyPart defenced = robotSecond.defense();
или так (если, например, атакована рука второго робота и защищена рука второго робота, так как атакует то у нас первый робот)
BodyPart attacked = robotSecond.attack();
BodyPart defenced = robotSecond.defense();
Вот фрагмент №2: Вопрос по этому фрагменту актуален, если, например, атакует рука первого робота и защищается рука второго робота.
public BodyPart attack() {
        BodyPart attackedBodyPart = null;
        hitCount = hitCount + 1;

        if (hitCount == 1) {
            attackedBodyPart = BodyPart.ARM;
        } else if (hitCount == 2) {
            attackedBodyPart = BodyPart.HEAD;
        } else if(hitCount ==3) {
            hitCount = hitCount-1;
            attackedBodyPart = BodyPart.CHEST;
        }
        else if (hitCount == 4) {
            hitCount = 0;
            attackedBodyPart = BodyPart.LEG;
        }
        return attackedBodyPart;
    }
Как может атаковать ГРУДЬ? Атакована она может быть, без проблем, но вот атаковать... Возможно, я очень сильно туплю. Возможно я не видел ответы на мои вопросы, а они были ранее. Но, правда, я искал.