[英]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());
}
}
有幾個問題。
我讓它編譯但是當它接受第一面[0]時,它立即停止並給我周界。 即使條件尚未滿足,也退出循環。 所以我的while循環有問題。 我希望它繼續接受 side[] 數組中的值,直到輸入一個非正值。
UML 還要求我對 addSide 方法使用雙參數類型。 我試圖把它放在爭論中,並嘗試了其他一些不同的事情,但沒有成功。 如何將一個 int 數組轉換為一個雙數組以進行周長計算,根據要求必須加倍。
如果我遇到其他問題,我不會感到驚訝,因為我是 Java 的新手,所以請隨時向我指出,或者如果您對此有更好的 go 方法,我很想了解您的想法。
任何建議表示贊賞!
您的代碼存在許多問題。
一、與UML規范的區別:
addSide
使用給定的簽名。 UML 說它接受一個double
精度參數,並且不返回任何內容,即 Java 中的void
。 您正在傳遞一個double
數組並返回一個double
。main
方法中直接訪問sides
。 Java 允許您這樣做,因為您的main
方法是Polygon
class 的一部分,但 UML 顯示該字段是私有的。 sides
的直接操作對perimeter
值的有效性有什么影響?sides
的字段類型為int
。 您的字段sides
是int[]
類型。getSides
簽名,它可能應該被命名為getNumberOfSides
。您的代碼還有很多其他問題,但我認為您應該先解決上述問題。
進一步的提示: Polygon
class唯一能做的就是告訴你它有多少邊以及它的總周長是多少。 它不關心個別方面的細節。
(題外話,在Polygon
的 UML 描述中包含main
很奇怪)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.