2016-01-17 51 views
0

我目前正在製作一個抑鬱症模擬程序,其中我創建了具有多個參數的Human對象,這些參數改變了抑鬱症會影響他們的方式。如何將數組與構造函數結合使用?

我的問題是,我能夠創建奇異人類的對象,如
Human steve = new Human("Steve", 25, 'm', 97000, 1, 3, false, false, 1, Human.happiness); ,但我不知道如何創造人類的陣列,其中包括一個單一的人具有的參數。例如,我可以創建一個人類陣列Human[] test = new Human[3];,其中有3個人,但我不知道如何爲這些人提供參數。

import java.util.ArrayList; 

public class Human { 
    private String name; // your name 
    private int age; // how old you are 
    private int wealth; // your average yearly income 
    private int amtFriendsFamily; // how many friends/family members you are 
            // close to 
    private int levelOfEducation; /* 
            * 1 = no education, 2 = high school 
            * education, 3 = college education, 4 = 
            * upper level college education 
            */ 
    private boolean married; 
    private boolean seeksDoctor; // true = seeks a doctor, false = does not seek 
            // a doctor 
    private char sex; // m = male, f = female 
    private int race; // 1 = white, 2 = black, 3 = hispanic, 4 = asian, 5 = 
         // mideast 
    static int happiness = 75; 

    private String sSex, sMarried, sDoct, sRace, sEdu; 
    private String[] names = { "Sally", "Karl", "Steven", "Emily" }; 

    public Human(String name1, int age1, char sex1, int wealth1, int amtFriendsFamily1, int levelOfEducation1, 
      boolean married1, boolean seeksDoctor1, int race1, int happiness1) { 
     name = name1; 
     age = age1; 
     wealth = wealth1; 
     amtFriendsFamily = amtFriendsFamily1; 
     levelOfEducation = levelOfEducation1; 
     married = married1; 
     seeksDoctor = seeksDoctor1; 
     sex = sex1; 
     race = race1; 
     happiness = happiness1; 

     if (sex == 'm') 
      sSex = "male"; 
     else if (sex == 'f') 
      sSex = "female"; 
     else 
      sSex = "foreign gender"; 

     if (married == false) 
      sMarried = "is not married, "; 
     else 
      sMarried = "is married, "; 

     if (seeksDoctor == false) 
      sDoct = "does not seek doctors."; 
     else 
      sDoct = "seeks doctors."; 

     if (race == 1) 
      sRace = "White"; 
     else if (race == 2) 
      sRace = "Black"; 
     else if (race == 3) 
      sRace = "Hispanic"; 
     else if (race == 4) 
      sRace = "Asian"; 
     else if (race == 5) 
      sRace = "Middle Eastern"; 

     if (levelOfEducation == 1) 
      sEdu = " has no formal education, "; 
     else if (levelOfEducation == 2) 
      sEdu = " has a high school education, "; 
     else if (levelOfEducation == 3) 
      sEdu = " has a college education, "; 
     else if (levelOfEducation == 4) 
      sEdu = " has an upper-college level or higher education, "; 

     System.out.println(name + " is a " + age + " year old " + sRace + " " + sSex + " who makes $" + wealth 
       + " per year," + " has " + amtFriendsFamily + " friends and family members combined," + sEdu + sMarried 
       + "and " + sDoct); 
    } 
} 

回答

1

我覺得是沿着這些線路,你要尋找的東西:

Human[] test = new Human[3]; 
Human temp = new Human("Steve", 25, 'm', 97000, 1, 3, false, false, 1, Human.happiness); 
test[0] = temp; 

只需重新定義temp即可或數組中的每個對象,然後設置數組中的其中一個對象等於temp。當然,最好是在一個循環中執行此操作,但在這種情況下,只有當程序爲每個對象獲取用戶/文件輸入時纔可能執行此操作。

+0

我覺得沒有想到這麼愚蠢。我會做的是 'Human [] test = new Human [3];' 'Human temp = new Human(「Steve」,25,'m',97000,1,3,false,false, 1,Human.happiness);' 'test [0] = temp;' 但不是設置值,而是隨機化它以創建一個新的,唯一的人類,每次都正確? – Zerukai

+0

我們都去過那裏。有時它只是一個全新的視角;) –

2

你可以做這樣的事情

// doesn't need size in initialization, the compiler can count the number of new Human instances 
Human[] test = new Human[] { 
    new Human(...), new Human(...), new Human(...) 
} 

或者使用索引

Human[] test = new Human[3]; 
test[0] = new Human(...);