首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >方法引用一组引用?

方法引用一组引用?
EN

Stack Overflow用户
提问于 2015-11-19 22:13:54
回答 3查看 433关注 0票数 2

我错过了我在Java上的一堂课,主题是课堂、方法、构造函数等。家庭作业是一项任务:

创建一个类Person,其对象描述人,并且只包含两个F屏蔽:名称(字符串)和出生年份(int)。在这个类中,定义

  • 以姓名和出生年数命名的建设者;
  • 构造函数只取名称,并将出生年份设置为默认值1990;
  • 方法如果该人是女性,则isFemale返回true (我们不太明智地假设只有妇女和所有妇女的名字以‘a’结尾);否则该方法返回false;
  • 静态函数getOlder,接受对类人对象的两次引用,并将引用返回给这两个人中的老对象;
  • 静态函数getOldest,它引用对类Person对象的引用数组,并返回对数组中表示的最老的人的引用;
  • 静态函数getYoungestFemale接受对类Person对象的引用,并返回对数组中表示的最小女性的引用,如果数组中没有女性,则为null。

在一个单独的类中,编写一个主函数,其中测试类Person的全部功能。

我查看了一些教程和解释,我没有直接到这里寻求帮助,但经过两个小时的脱发,我只能想出这样的办法:

代码语言:javascript
运行
复制
public class Person {
    String name;
    int yob; //year of birth

    public Person() {
        Person jan = new Person("Jan", 1995); //the names are polish
        Person joanna = new Person("Joanna", 1993);
        Person michal = new Person("Michal", 1980);
        Person beata = new Person("Beata", 1979);
        Person kazimierz = new Person("Kazimierz", 1998);
        Person magdalena = new Person("Magdalena", 1999);
    }

    public Person(String name, int yob) {
        this.name = name;
        this.yob = yob;
    }

    public Person(String name) {
        this.name = name;
        this.yob = 1990;
    }

    public static boolean isFemale(String name) {
        if(name.equals("Joanna")) {
            return true;
        } else {
            return false;
        }
    }

    public static String getOlder(Person x?, Person y?) { // if I understand the task correctly, I should reference any two names?
        if(x?.yob>y?.yob) {
            return x?.name;
        } else {
            return y?.name;
        }

    //getOldest and getYoungestFemale methods go here

    }
}

然而,我不能把头绕在最后三个步骤上。我的大脑真的沸腾了。如果有人能解释最后的三个要点(getOlder指的是任何2个人和getOldest/getYoungestFemale),那将是非常有帮助的。

如果您没有时间解释,一些“引用数组的方法”的例子应该足以让我得到一个基本的理解。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-11-19 22:29:46

这里有一些提示,可以帮助你自己找出答案,而不让我透露答案;)

1)

代码语言:javascript
运行
复制
 public static String getOlder(Person x?, Person y?) {
      // if I understand the task correctly, I should reference any two names?     
     if(x?.yob>y?.yob) { 
            return x?.name;       
     } else {         
            return y?.name;       
     }
}

这个代码几乎是正确的!去掉问号就行了!还请记住,老年人将有一个更早的酸奶。编辑,还需要返回对人的引用,而不是他们的名字,所以返回x或y。

2) getOldestgetYoungestWoman

代码语言:javascript
运行
复制
Person[]

是对Person对象的引用数组。您应该能够阅读如何循环遍历数组的元素并比较值。

3)额外的:如果在构造函数中声明这6个Person对象,您将无法在类的其他方法中访问它们。在那里创建Person对象是可以的,但是必须在构造函数之外声明它们。在课堂上宣布他们。

票数 2
EN

Stack Overflow用户

发布于 2015-11-19 22:35:47

通常..。你不把它叫做“对某事物的一系列引用的引用”,你只是说“某物的数组”。即使对象数组是对对象的引用数组。就像对象的变量只是对对象的引用一样。

代码语言:javascript
运行
复制
Type heyImAReference = new ImTheObject();

所以当你写

代码语言:javascript
运行
复制
Person person = new Person();

您将以类Person作为类型,将person作为对该类的实例(或对象)的引用,并将new Person()的结果实体作为所引用的实际事物。通常称为“实例”或在您的情况下称为“对象”。

当涉及到人员数组时,您会这样做

代码语言:javascript
运行
复制
Person[] persons = new Person[5];

您可以通过new Person[5]创建一个数组实例,该实例有5个插槽,每个插槽中的每个插槽都可以象征性地运行一个Person实例,尽管您有5个引用。Person[0]是第一,Person[1]是第二,依此类推。因此,这是“对类Person对象的引用的数组”。

persons就是对此的参考。因此,它是“对类Person对象的引用数组的引用”。

  • static函数getOldest接受对类Person对象的引用数组的引用,并返回对数组中表示的最年长的人的引用

没有什么比

代码语言:javascript
运行
复制
static Person getOldest(Person[] persons) {
    ...
}

我会称之为一个方法,它接受一个Person数组并返回一个Person。不过从技术上讲,所有这些都只是参考资料,然后再出来。Person对象不会“移动”

票数 2
EN

Stack Overflow用户

发布于 2015-11-19 22:37:00

首先,创建另一个具有主方法的类。在main中创建一个数组:

代码语言:javascript
运行
复制
Person[] parr = new Person[6];
//Then fill all your person to this array:
parr[0] = new Person("name", year);
parr[1] = ....

然后将这个数组处理程序传递给您的方法:

代码语言:javascript
运行
复制
Person p1 = Person.findSomething(parr);

当面上课:

代码语言:javascript
运行
复制
public static Person findSomething(Person[] parr){
  for (Person p : parr){
     if (p.name.endsWith("a")) return p;
  }
  return null;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33815355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档