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

引用引用数组的方法?

牛骞仕
2023-03-14

我错过了Java的一次讲座,主题是类、方法、构造函数等。作业是一项任务:

创建一个类Person,其对象描述人员,并且只包含两个字段:name(String)和生年(int)。在此类中,定义

>

  • 建造师姓名和出生年份;

    构造函数只取名称并将出生年份设置为默认值1990;

    方法是如果此人是女性,则女性返回true(我们不太明智地假设只有女性和所有女性的名字以字母“a”结尾);否则该方法返回false;

    静态函数getOlder对类Person的对象进行两次引用,并将引用返回给这两个人中较长的一个;

    静态函数getOlested获取对Person类对象的引用数组的引用,并将引用返回给数组中表示的最老的人;

    静态函数getYoungs女性获取对类Person对象的引用数组的引用,并返回对数组中表示的最年轻女性的引用,如果数组中没有女性,则返回null。

    在一个单独的类中,编写一个main函数,在该函数中测试类Person的整个功能。

    我查看了一些教程和解释,我并没有直接到这里寻求帮助,但在两个小时的脱发后,我只能想出以下方法:

    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/getYoungest女性

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

    提前谢谢。

  • 共有3个答案

    乌翰学
    2023-03-14

    这里有一些提示可以帮助您自己找到答案,而无需我给出答案;)

    1)

     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;       
         }
    }
    

    此代码几乎正确!只需去掉问号!还请记住,老年人会有更早的yob。编辑,您还需要返回对该人员的引用,而不是其姓名,因此请返回x或y。

    2) 获取最年长的女性和最年轻的女性

    Person[]
    

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

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

    闻人高卓
    2023-03-14

    首先创建另一个将具有main方法的类。在main中创建阵列:

    Person[] parr = new Person[6];
    //Then fill all your person to this array:
    parr[0] = new Person("name", year);
    parr[1] = ....
    

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

    Person p1 = Person.findSomething(parr);
    

    在个人类中:

    public static Person findSomething(Person[] parr){
      for (Person p : parr){
         if (p.name.endsWith("a")) return p;
      }
      return null;
    }
    
    訾稳
    2023-03-14

    通常...你不称之为“对某物引用数组的引用”你只是说“某物数组”。即使对象数组是对对象的引用数组。就像对象的变量只是对对象的引用一样。

    Type heyImAReference = new ImTheObject();
    

    所以当你写作的时候

    Person person = new Person();
    

    您将拥有类Person作为类型,作为对该类的实例(或对象)的引用,以及new Person()的结果实体作为实际的东西被引用。通常称为“实例”或在您的情况下称为“对象”。

    当涉及到人的阵列时,你做到了

    Person[] persons = new Person[5];
    

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

    是对它的引用。所以它是“对Person类对象的引用数组的引用”

    • 静态函数获取对Person类对象引用数组的引用,并将引用返回给数组中表示的最老的人

    只意味着

    static Person getOldest(Person[] persons) {
        ...
    }
    

    我称它为一个接受一个人数组并返回一个人的方法。虽然从技术上讲,它只是进出的引用。Person对象不“移动”

     类似资料:
    • 在以下示例中,我尝试将引用方法与表达式一起使用: 输出 但是我在方法中得到的只是一个包含空元素的数组,表达式难道不应该创建一个具有指定大小的数组,并为每个元素调用类的构造,就像在方法中使用表达式时发生的那样吗?

    • 问题内容: 在Java 8中,具有以下类 可以通过方法引用来调用setBornTrue方法: 但是我将如何使用forEach方法并通过 方法引用 使用setBorn ?试: 导致错误“无法解析方法setBorn”。 另外,我该如何传递True的值? 问题答案: 使用lambda: 没有发现仅使用Java 8 API的其他方法。 使用此自定义功能: 你可以做: 如果Java API或库中提供了这种实

    • 本文向大家介绍使用Java8中的方法引用来引用构造函数,包括了使用Java8中的方法引用来引用构造函数的使用技巧和注意事项,需要的朋友参考一下 Java中的Lambda表达式使您可以将功能作为参数传递给方法。您也可以使用lambda表达式调用现有方法。 方法引用是简单,易于阅读的lambda表达式,可通过lambda表达式来调用/引用以及现有方法的名称。除了实例和静态方法,您还可以使用new关键字

    • 问题内容: 我使用jQuery制作了一个小型应用程序。我正在从如下所示的JSON文件中为其设置不可用的日期: 我想检查给定的日期是否已经在此列表中,如果有,请删除它。我当前的代码如下所示: 我的问题是在我再次对数组进行编码后,它看起来像这样: 有没有一种方法可以在JSON文件中找到日期匹配并将其删除,而在编码后不会出现键? 问题答案: 使用您的问题: 为什么?因为您要取消设置数组的键而无需重新排序

    • 本文向大家介绍php中引用&的用法分析【变量引用,函数引用,对象引用】,包括了php中引用&的用法分析【变量引用,函数引用,对象引用】的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了php中引用&的用法。分享给大家供大家参考,具体如下: php的引用(就是在变量或者函数、对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的

    • 本文向大家介绍使用Java8中的方法引用来引用实例方法,包括了使用Java8中的方法引用来引用实例方法的使用技巧和注意事项,需要的朋友参考一下 Java中的Lambda表达式使您可以将功能作为参数传递给方法。您也可以使用lambda表达式调用现有方法。 方法引用是简单,易于阅读的lambda表达式,可通过lambda表达式中的名称来调用/引用和现有方法。 语法 以下是在Java中引用实例方法的语法