Как создать счётчик,, в List при котором код будет считываться первые шесть элементов, далее останавливаться и продолжать считывать оставшиеся 6?

Я вывожу площадь треугольника по трем его вершинам: 2 1 -6 -3 1 5, как сделать, чтобы можно было выводить множество площадей: 2 1 -6 -3 1 5 1 1 4 4 5 1 2 3 4 1 2 5 1 2 3 с разными вершинами непрерывно.Читаются элементы из файла.

while(true){
            for (int i = 0; i < arrList.get(i); i++) {
                int x1 = arrList.get(0);
                int y1 = arrList.get(1);
                int x2 = arrList.get(2);
                int y2 = arrList.get(3);
                int x3 = arrList.get(4);
                int y3 = arrList.get(5);

//            double a = Math.sqrt((arrList.set(i,x1) - arrList.set(i,x2))* (arrList.set(i,x1) - arrList.set(i,x2)) +
//                    (arrList.set(i,y1) - arrList.set(i,y2)) * (arrList.set(i,y1) - arrList.set(i,y2)));
//            double b = Math.sqrt((arrList.set(i,x1) - arrList.set(i,x3))* (arrList.set(i,x1) - arrList.set(i,x3)) +
//                    (arrList.set(i,y1) - arrList.set(i,y3)) * (arrList.set(i,y1) - arrList.set(i,y3)));
//            double c =  Math.sqrt((arrList.set(i,x2) - arrList.set(i,x3))* (arrList.set(i,x2) - arrList.set(i,x3)) +
//                    (arrList.set(i,y2) - arrList.set(i,y3)) * (arrList.set(i,y2) - arrList.set(i,y3)));
                double a = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
                double b = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
                double c = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
//            if (a + b <= c || a + c <= b || a + c <= b)
//                System.out.println("Треугольник не существует");
//            else {
                double p = ((a + b + c) / 2);
                double square = Math.sqrt(p * (p - a) * (p - c) * (p - b));
                System.out.println("Площадь треугольника: " + square);

            }
            break;
        }

Ответы (1 шт):

Автор решения: Nowhere Man

Для этого следует изменить шаг в цикле for, а также исправить сравнение, так как arrList.get(i) возвращает координату, которая может оказаться отрицательной.

for (int i = 0, n = arrList.size(); i < n; i += 6) {
    int x1 = arrList.get(i);
    int y1 = arrList.get(i + 1);
    int x2 = arrList.get(i + 2);
    int y2 = arrList.get(i + 3);
    int x3 = arrList.get(i + 4);
    int y3 = arrList.get(i + 5);

    double a = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    double b = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
    double c = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
    if (a + b <= c || a + c <= b || a + c <= b)
        System.out.println("Треугольник не существует");
    else {
        double p = ((a + b + c) / 2);
        double square = Math.sqrt(p * (p - a) * (p - c) * (p - b));
        System.out.println("Площадь треугольника: " + square);
    }
}
→ Ссылка