簡體   English   中英

引用引用數組的方法?

[英]Method taking reference to an array of references?

我錯過了我的Java講座之一,主題是類,方法,構造函數等。作業是一項任務:

創建一個Person類,其對象描述人,並且只包含兩個屬性:名稱(字符串)和出生年份(int)。 在此類中,定義

  • 建設者的名字和出生年月;

  • 構造函數僅使用名稱並將出生年份設置為默認值1990;

  • 方法isFemale如果該人是女性,則返回true(我們不十分理智地假設只有女性和所有女性的名字都以字母'a'結尾); 否則,該方法返回false;否則返回false。

  • 靜態函數getOlder獲取對Person類的對象的兩個引用,並將引用返回給這兩個人員中的較大者;

  • 靜態函數getOldest將對數組引用的引用歸類為Person類的對象,並將該引用返回給該數組中表示的最早的人;

  • 靜態函數getYoungestFemale引用對Person類的對象的引用數組,並將引用返回給數組中表示的最小的女性;如果該數組中沒有任何女性,則返回null。

在一個單獨的類中,編寫一個主要函數,其中測試了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 / getYoungestFemale

如果您沒有時間解釋,那么一些“引用數組的方法”的例子應該足以讓我基本理解。

提前致謝。

這里有一些提示,可以幫助您自己解決問題,而無需我給出解決方案;)

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

這段代碼幾乎是正確的! 只需刪除問號! 還請記住,老年人的早期偏見。 編輯,同樣,您需要返回對該人的引用,而不是他們的名字,因此返回x或y。

2) getOldestgetYoungestWoman

Person[]

是對Person對象的引用的數組。 您應該能夠了解如何遍歷數組的元素並比較值。

3)一個額外的功能:如果在構造函數中聲明了這6個Person對象,則將無法在該類的其他方法中訪問它們。 可以在此處創建Person對象,但是必須在構造函數之外聲明它們。 在課堂上宣告他們。

通常..您不稱其為“對某物的引用數組的引用”,而只是說“某物的數組”。 即使對象的數組對象的引用數組。 就像對象的變量一樣,它只是對對象的引用。

Type heyImAReference = new ImTheObject();

所以當你寫

Person person = new Person();

您將具有類Person作為類型,將person作為對該類的實例(或對象)的引用,並將new Person()的結果實體作為被引用的實際事物。 通常稱為“實例”,或者在您的情況下稱為“對象”。

當涉及到各種各樣的人時,你會

Person[] persons = new Person[5];

通過new Person[5]創建一個具有5個插槽的數組實例,盡管您有5個引用,但實際上每個插槽中都可以形象地使用一個Person實例。 Person[0]是第一個, Person[1]是第二個,依此類推。 因此,這是“對Person類的對象的引用數組”。

persons是對此的參考。 因此,它是“對對Person類的對象的引用數組的引用”

  • static函數getOldest獲取對指向Person類對象的引用數組的引用,並將引用返回給該數組中表示的最舊的person

只不過是

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

我將這種方法稱為采用一個Persons數組並返回一個Person的方法。 盡管從技術上講,它們只是引用而已。 Person對象不會“移動”

首先創建另一個具有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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM