为每个元素创建对象

时间:2016-03-04 02:37:57

标签: java object

我想做this之类的事情:

  

创建一个具有以下属性的类:String name; int atomicNumber; String symbol; double mass;

     

创建初始值设定项,以便您只需执行new Element("Hydrogen", 1, "H", 1.0079)toString方法。

     

现在为每个元素创建一个对象。请注意,现在,每个元素只有一行代码。您可以将它们存储在一个数组中(或使用该名称作为键的字典)。

     

当用户输入名称时,您可以在数组中查找它(或者只是从字典中的键中获取值)并在对象上调用toString

     

为什么这样?想象一下,现在你必须在输出中添加一行,每个原子的价电子数。这将需要toString中的一行或两行,而不是每个元素一行。

我该怎么做呢?具有属性的类会是什么样的?

我试过制作一个:

public class Structure {
    String name;
    int age;
    String color;

    public void add(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }
}

但是我不太确定如何继续,而Structure.add("Adele",25,"Grey");可以正常工作,但与另一个人一起工作会覆盖数据。

4 个答案:

答案 0 :(得分:1)

您想要为每个元素创建一个新对象。因此,班级"添加"方法,不应该被称为"添加"。因为它不会添加任何东西。相反,让我们做一个构造函数。像这样:

public Structure(String name, int age, String color) {
    //The inside stays the same
}

现在我们可以制作这样的对象:

Structure s = new Structure("matthew", 22, "BLUE");

我们可以将这些对象存储在这样的数组中:

Structure[] structures = new Structures[numStructures];
for(int i = 0; i < numStructures; i++) {
    structures[i] = new Structure("whatever", 99, "some color")l
}

答案 1 :(得分:0)

您应该在列表中存储多个Structure个对象。

public class Structure {
    String name;
    int age;
    String color;

    public Structure(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }
}

然后,在你正在创建对象的地方。

List<Structure> list = new ArrayList<>();
list.add(new Structure("john",25,"blue"));
list.add(new Structure("sally",15,"green"));
list.add(new Structure("mark",35,"red"));

答案 2 :(得分:0)

类的关键是你可以创建该classtype的新对象。在Java中,您可以创建类的实例,如下所示:

Structure instance1 = new Structure();

在您的情况下,您有一个add方法,因此您可以在新对象上调用它来设置其属性:

instance1.add("Adele", 25, "Grey");

但定义构造函数更有意义:

public Structure(String name, int age, String color) {
    this.name = name;
    this.age = age;
    this.color = color;
}

我建议您阅读一些基本的object-oriented programming concepts

答案 3 :(得分:0)

你的第34次尝试&#34;应该是

public class Structure {
  String name;
  int age;
  String color;

  public Structure(String name, int age, String color) {
    this.name = name;
    this.age = age;
    this.color = color;
  }
}

不是编写方法add,而是创建构造函数:没有返回类型(删除void),并且必须使用与类名相同的名称。

对于您的问题,请使用属性name, atomicNumber, symbol and mass,而不是示例中的属性name, age and color。您还必须使用班级名称Element而不是Structure