当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用带有数组的方法?

连昊天
2023-03-14

我的第一个问题,所以请指出我的错误。老实说,我找不到任何类似的问题。

所以我试图写一些非常基本的东西,我真的不明白为什么我不能从我的主类的Util类调用一个方法。

Util类


    private double accumulatedArea;
    private double accumulatedCircumference;


    public static double getAccumulatedArea(Shape[] shapes) {
        double accumulatedArea = 0;
        for (Shape s : shapes) {
            accumulatedArea = accumulatedArea + s.area();
            return accumulatedArea;
        }
        return accumulatedArea;
    }


    public static double getAccumulatedCircumference(Shape[] shapes) {
        double accumulatedCircumference = 0;
        for (Shape q : shapes) {
            accumulatedCircumference = accumulatedCircumference + q.circumference();
            return accumulatedCircumference;
        }
        return accumulatedCircumference;
    }

    public String toString() {
        return "Number: ";
     }

}

主课呢


    public static void main(String[] args) {

        Shape[] shapes = new Shape[4];

        shapes[0] = new Circle(100);
        shapes[1] = new Circle(23);

        shapes[2] = new Rectangle(10, 20);
        shapes[3] = new Rectangle(8, 12);

        System.out.println("Area of the circle 1: " + shapes[0].area() + " and its circumference is: " + shapes[0].circumference());
        System.out.println("Area of the circle 2: " + shapes[1].area() + " and its circumference is: " + shapes[1].circumference());

        System.out.println("Area of the rectangle 1: " + shapes[2].area() + " and its circumference is: " + shapes[2].circumference());
        System.out.println("Area of the rectangle 2: " + shapes[3].area() + " and its circumference is: " + shapes[3].circumference());
        //Small test
        System.out.println("Number of shapes are in the system: " + shapes.length);

        //????? What to do here??
        for (int p = 0; p < shapes.length; p++) {
            Shape[p].getAccumulatedArea();
        }


    }
}

我如何调用我的GetAccumeratedAreaGetAccumeratedPercentage方法??

我已经找了几天了,我真的不知道怎么找。

我用的是2个长方形,也就是2个长方形。它们非常相似,所以我只放一个。

    private double radius;
    private double circumference;
    private double area;
    private ArrayList<Circle> circles;


    //throws Exception gives error! learn how to do exceptions!
    public Circle(double radius) {
        super();
        if(radius > 0) {
            this.radius = radius;
        }
        else {
            System.out.println("Throw new Exception!!");
        }
    }

    public void setRadius(double radius) throws Exception {
        if (radius < 0) {
            throw new Exception();
        }
        else {
            this.radius = radius;
        }
    }
    public void setCircumference(double circumference) throws Exception {
        if (circumference < 0) {
            throw new Exception();
        }
        else {
            this.circumference = circumference;
        }
    }

    public void setArea(double area) {
        if (area <= 0) {
            System.out.println("Please check your input!");
        }
        else {
            this.area = area;
        }
    }

    public double getRadius() {
        return radius;
    }

    public double getCircumference() throws Exception{
        if (radius < 0) {
            throw new Exception();
        }
        else {
            return circumference;
        }
    }

    public double getArea() throws Exception{
        if (radius < 0) {
            throw new Exception();
        }
        else {
            return area;
        }
    }

    @Override
    public double circumference() {
        return 2 * Math.PI * radius;
    }

    @Override
    public double area() {
        return radius * radius * Math.PI;
    }
}

代码看起来有点混乱,但那是因为我一直在尝试一切:)欢迎任何建议。顺便说一句,我使用的是Arraylist,但据我认识的一些人说,在这种情况下使用Array要好得多。

共有1个答案

严信瑞
2023-03-14

您的Util类中的方法是静态。静态方法应该在它声明为其一部分的类上调用。您声明的两个方法都采用了类型Shape[]的参数。所以您应该像这样调用它们:

Util.getAccumulatedArea(shapes)

…其中shapesShape[]类型的值。

 类似资料:
  • 问题内容: 我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类: 这是调用代码: 我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么 错。 任何指针将不胜感激。 谢谢 问题答案: public class Test { 为我工作。 将您的N []投射到对象 在实例上调用,而不在类上调用

  • 我的: 错误: 原因:org。springframework。数据地图。PropertyReferenceException:找不到用户类型的属性findAll 参考-http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html?i

  • 我想在全局范围内使用一个数组,以便能够用不同的方法修改它,并在最后用主调用方法

  • 问题内容: 我需要知道是否将数据存储在ArrayList中,并且需要获取存储在其中的值。 例如:如果我有这样的数组列表 我想获取每个String元素,该怎么办? 我尝试通过以下代码来做到这一点: 问题答案: 以下代码段提供了一个示例,展示了如何从指定索引处的元素中获取元素,以及如何使用高级的for-each循环遍历所有元素: 请注意以下几点: 使用泛型和类型代替原始类型。 变量名以小写字母开头 被

  • 在这里,我希望“BroadthFirstSearch”是某种通配符(*)(或方法结构中的参数),这样我就可以像; 没有重复。我该怎么做?

  • 我正在这样使用spring boot和rest模板。 在上面的代码中,我得到了字符串形式的响应。我想将每个值映射到一个pojo类,并将其插入到我的数据库中。现在我还不知道如何将这些数组映射到pojo类中。