簡體   English   中英

在 class Java 中使用數組的問題

[英]Issue with using array in a class Java

我正在嘗試基於此 UML 構建一個 Java 程序: UML of Polygon Class

但我在途中遇到了一些小問題。 這是我的基本代碼:

import java.util.Scanner;

public class Polygon {
        private int[] side;
        private double perimeter;
        
        public double addSide(double length[]) {
                int i = 0;
                double perimeter = 0;
                while(length[i] > 0){
                    perimeter += (double)length[i];
                    i++;
                }
                return perimeter;          
        }
        public int[] getSides() {return side;}
        public double getPerimeter() {return perimeter;}
        
        public static void main(String[] args) {
                Polygon polygon=new Polygon();
                polygon.side = new int[99];
                int i=0;
                do{
                    System.out.print("Side length(0 when done): ");
                    Scanner in = new Scanner(System.in);
                    polygon.side[i] = in.nextInt();
                    i++;
                }while(polygon.side[i]>0);
                //polygon.perimeter = addSide((double)polygon.side);
                
                System.out.println("Perimeter of " + i + "-sided polygon: " + polygon.getPerimeter());
        }
        

}

有幾個問題。

  1. 我讓它編譯但是當它接受第一面[0]時,它立即停止並給我周界。 即使條件尚未滿足,也退出循環。 所以我的while循環有問題。 我希望它繼續接受 side[] 數組中的值,直到輸入一個非正值。

  2. UML 還要求我對 addSide 方法使用雙參數類型。 我試圖把它放在爭論中,並嘗試了其他一些不同的事情,但沒有成功。 如何將一個 int 數組轉換為一個雙數組以進行周長計算,根據要求必須加倍。

  3. 如果我遇到其他問題,我不會感到驚訝,因為我是 Java 的新手,所以請隨時向我指出,或者如果您對此有更好的 go 方法,我很想了解您的想法。

任何建議表示贊賞!

您的代碼存在許多問題。

一、與UML規范的區別:

  1. 您沒有為addSide使用給定的簽名。 UML 說它接受一個double精度參數,並且不返回任何內容,即 Java 中的void 您正在傳遞一個double數組並返回一個double
  2. 您在main方法中直接訪問sides Java 允許您這樣做,因為您的main方法是Polygon class 的一部分,但 UML 顯示該字段是私有的。 sides的直接操作對perimeter值的有效性有什么影響?
  3. UML 顯示了sides的字段類型為int 您的字段sidesint[]類型。
  4. 同樣,您沒有使用給定的getSides簽名,它可能應該被命名為getNumberOfSides

您的代碼還有很多其他問題,但我認為您應該先解決上述問題。

進一步的提示: Polygon class唯一能做的就是告訴你它有多少邊以及它的總周長是多少。 它不關心個別方面的細節。

(題外話,在Polygon的 UML 描述中包含main很奇怪)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM