2016-01-17 27 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(...);