为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 println 在 for 循环中只打印一次并且值错误?

为什么 println 在 for 循环中只打印一次并且值错误?

慕娘9325324 2022-10-07 19:30:29
我必须创建一个代码,给定多边形名称及其顶点坐标,打印周长。即使我更改输入值,它也总是打印 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 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

您可能应该替换double xa = Punto.getX(punti[i++]);为,double xa = Punto.getX(punti[i + 1]);这样您就不会修改i它,因为它用于遍历数组。



查看完整回答
反对 回复 2022-10-07
?
精慕HU

TA贡献1845条经验 获得超8个赞

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

查看完整回答
反对 回复 2022-10-07
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信