【问题标题】:Java - Multiple fields of same data type in an objectJava - 对象中具有相同数据类型的多个字段
【发布时间】:2017-11-09 09:00:10
【问题描述】:

上完课我在练习继承和组合,决定写一个小程序来尝试一些东西,偶然发现一个问题,我会展示我的代码,它有4个类,包括Main.java:

public class Main {

public static void main(String[] args) {

    Person person1 = new Person("Person1", 170); //"Name", height
    Person person2 = new Person("Person2", 200); //"Name", height

    Bed bed1 = new Bed(160);

    Bedroom bedroom1 = new Bedroom(bed1, person1);

    bedroom1.sleep();

public class Bedroom {

private Bed theBed;
private Person thePerson;

//Constructors

public void sleep() {
    if(thePerson.getHeight() > 180) {
        System.out.println("You are too tall to sleep on this bed.");
    } else {
        theBed.sleepOnBed();
    }
}

//Getters

public class Bed {

private Person thePerson;
private int height;

//Constructor

public void sleepOnBed() {
        System.out.println("You sleep on the bed.");
}

//Getters 

public class Person {

private String name;
private int height;

//Constructor

//Getters

我想要做的是在 Main.java 的 bedroom1 对象中同时使用 person1 和 person2,然后在它们上测试 sleep() 方法,但我就是想不通使用方法。

我尝试过这样的事情:

public class Bedroom {

private Bed theBed;
private Person thePerson1;
private Person thePerson2;

public Bedroom(Bed theBed, Person thePerson1, Person thePerson2) {
    this.theBed = theBed;
    this.thePerson1 = thePerson1;
    this.thePerson2 = thePerson2;
} 


public class Main {

public static void main(String[] args) {

    Person person1 = new Person("Person1", 170);
    Person person2 = new Person("Person2", 200);

    Bed bed1 = new Bed(160);

    Bedroom bedroom1 = new Bedroom(bed1, person1, person2);

    bedroom1.sleep(); 

但正如您可能理解的那样,这将一事无成。我太累了,在网上找不到任何线索,可能是因为我使用了错误的关键字 idk。

我希望我的程序获取数据类型为 Person 的多个对象,并查看它们的高度是否符合睡在床上的条件,差不多就是这样。

【问题讨论】:

  • 您可以定义一个array of Person,并将其传递给Bedroom 构造函数。然后你可以遍历数组并检查你想要的条件。当你这样做时,你需要在 Bed 对象中设置验证条件的人。

标签: java class object inheritance composition


【解决方案1】:

您可以将 Person 替换为卧室类中的 Person 对象列表,然后在 sleep 方法中循环遍历数组。

public Bedroom(Bed bed1, List<Person> aListOfPersons)
{
  this.persons = aListOfPersons;
}

public void sleep()
{
  for(Person aPerson : persons)
   {
      //check for each aPerson if he fits in the bed
   }
 }

欢迎来到 Stackoverflow,祝您编码愉快!

【讨论】:

  • 除非您使用原语,否则使用List&lt;Person&gt; 而不是数组通常是个好主意。这样你就不用关心实现是什么了。 stackoverflow.com/questions/1589813/…
  • 啊该死的!我还没有在我的课程中使用数组或列表!感谢您的回答和热烈的欢迎。
  • @Nedotian 如果这回答了您的问题,请将此问题标记为已回答。
  • @Novaterata 感谢您的信息,我已经相应地更改了代码。
猜你喜欢
  • 2018-06-25
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
相关资源
最近更新 更多