创建一个显示对象数组中的吸气剂的类

时间:2019-02-12 04:11:02

标签: java arrays

从另一个类的对象数组访问getter方法时,我目前遇到问题。

public class Getters {

public double getTotal() {
double total = 0;
total=x+y+z;
return total;
}

我将运行一个选择排序算法,该算法在这方面有效并且成功。

public class Sort {
private Getters x[] = new Getters[21];
public void selectionSort() {
Getters temp;
    int minIndex;
    for(int i=0; i<=N-2; i++) {
        minIndex = i;
        for(int j=i+1; j<=N-1; j++) {
            if(arrayObj[j].getTotal() < arrayObj[minIndex].getTotal())
                minIndex = j;
        }
        if(minIndex != i) {
            temp = arrayObj[i];
            arrayObj[i] = arrayObj[minIndex];
            arrayObj[minIndex]=temp;
}
}

这现在将调用我的getTotal()并根据总点数对对象数组进行排序。填充对象后,我的主要方法如下:

Sort x = new Sort();
Report y = new Report();
....
x.selectionSort();
y.displayReport();

现在,我希望我的displayReport类打印出有关我的对象数组的信息,但是我似乎无法编写它。如果我试图像这样将x传递给getTotal(),我将无法在新类中调用displayReport

y.displayReport(x);

然后,我将像这样设置类Report

public class Report{
    public void displayReport(Sort x) {

   for(int i = 20; i > 15; i--) {
       System.out.println(x.getTotal());
       }
   }
 }

所以我的问题是我试图访问getTotal()类中的Sort,但是它属于Getters类。在我的主要方法中,我无法找到一种将所有对象数组传递给Report类的方法,以便可以让它访问我的吸气剂。

1 个答案:

答案 0 :(得分:0)

您的问题似乎是您无权访问您感兴趣的字段。有两种解决方法。首先,您可以像下面这样简单地将Getters x[]类中的Sort字段设置为public:

public Getters x[] = new Getters[21];

这将允许您使用以下行从x[]类访问Report

System.out.println(x.x.getTotal());

在这里,我们正在访问对象x[]的字段Sort x

但是,这仅仅是创可贴解决方案。在Java中,您要考虑封装数据,这意味着您为类中的每个字段指定了特定的访问方式。如果将字段设置为public,则可以访问数据,是的,但是以未定义的方式访问,以便其他类可以以您不希望的方式访问数据。这可能会导致一些令人讨厌的错误。

您可能还需要考虑变量名称,这些变量名称解释了它们所指的对象是什么,因此我可能将其称为Getters x[]而不是Getters getters[]

此外,我的方法是将x[]字段保持私有状态,并在Sort内创建一个新方法,该方法只是将其返回:

public Getters[] getGetters()
{
    return getters;
}

这不仅封装了数据,而且在Report类中编写用于访问数据的行时更有意义:

System.out.println(x.getGetters.getTotal());