【问题标题】:Issue with using array in a class Java在 Java 类中使用数组的问题
【发布时间】:2022-01-31 03:50:26
【问题描述】:

我正在尝试基于这个 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 新手,所以请随时向我指出,或者如果您有更好的方法来解决这个问题,我很想了解您的想法。

感谢任何建议!

【问题讨论】:

    标签: java arrays class casting


    【解决方案1】:

    您的代码存在许多问题。

    一、与UML规范的区别:

    1. 您没有为addSide 使用给定的签名。 UML 说它接受一个 double 参数,并且什么都不返回,即 Java 中的 void。您正在传递一个 double 数组并返回一个 double
    2. 您在main 方法中直接访问sides。 Java 允许您这样做,因为您的main 方法是Polygon 类的一部分,但UML 显示该字段是私有的。直接操作sidesperimeter 中值的有效性有何影响?
    3. UML 显示类具有类型为int 的字段sides。您的字段 sides 的类型为 int[]
    4. 同样,您没有使用getSides 的给定签名,它可能应该命名为getNumberOfSides

    您的代码还有很多其他问题,但我认为您应该先解决上述问题。

    进一步的提示:Polygon 类可以做的唯一事情是告诉你它有多少边以及它的总周长是多少。它不关心各个方面的细节。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多