繁体   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