为什么在for循环打印中,println只会出现一次错误的值?

时间:2019-04-15 12:22:56

标签: java printing math.sqrt

我必须创建一个代码,给定多边形名称及其顶点坐标,即可打印周长。即使更改输入值,它也始终显示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张,而仅打印一次

2 个答案:

答案 0 :(得分:9)

您可能应该将double xa = Punto.getX(punti[i++]);替换为double xa = Punto.getX(punti[i + 1]);,以免您修改i,因为它被用来遍历数组。

答案 1 :(得分:0)

@devgianlu已经存在您问题的正确答案!

但是,我想补充一点,当发生某些明显不合理的事情时,请尝试调试您的代码(例如,逐步执行代码行)。您会发现机器总是按照我们所说的去做。有时我们认为要声明一项特定任务,但实际上,我们无意中声明了其他事情。