Мне нужно создать код, который по заданному имени многоугольника и координатам его вершин печатает периметр. Даже если я изменяю входные значения, он всегда печатает 5.0 . Что я делаю не так?
Я попытался использовать цикл for и напечатать длину каждой стороны треугольника, но результат по-прежнему равен 5,0 и печатается только один раз. Теперь я попытался напечатать рекурсивную сумму на каждом шаге, но безрезультатно.
public static void main(String[] args) {
int i;
double result = 0;
double x1 = Double.valueOf(args[1]);
double y1 = Double.valueOf(args[2]);
Punto p1 = new Punto(x1, y1);
double x2 = Double.valueOf(args[3]);
double y2 = Double.valueOf(args[4]);
Punto p2 = new Punto(x2, y2);
double x3 = Double.valueOf(args[5]);
double y3 = Double.valueOf(args[6]);
Punto p3 = new Punto(x3, y3);
Punto[] punti = {p1, p2, p3};
Poligono A = new Poligono(args[0], punti);
for (i = 0; i < punti.length - 1; i++) {
double xa = Punto.getX(punti[i++]);
double xb = Punto.getX(punti[i]);
double ya = Punto.getY(punti[i++]);
double yb = Punto.getY(punti[i]);
result = result + Math.sqrt(Math.pow(Math.abs(xa - xb), 2) + Math.pow(Math.abs(ya - yb), 2));
System.out.println(result);
}
}
(Punto означает точку) Правильный ответ — 12, но он всегда печатает 5 и только один раз.
i < punti.length - 1
условие неверно. В вашем случаеpunti.length
равно 3, поэтому цикл будет выполняться только для i=0 и i=1. Более того,punti[i++]
также увеличиваетi
после первого запускаi==3
, поэтому не будет запускаться еще раз. - person Amongalen   schedule 15.04.2019