亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 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 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號