Java和OOP的新手,并尝试找出ArrayList和ArrayList中的Objects。以下程序有效,但我忍不住感觉到我没有以正确的方式做事(或思考事情)。对我来说,我做事情的方式似乎很笨拙,如果我要说再添加100只狗,我怎么能得到数据而不必多行安装?在我继续前进之前,我热衷于正确地开始并养成良好的习惯。
import java.util.*;
public class Dogprint2 {
public static void main(String[] args) {
Dog doggy = new Dog();
doggy.setbreed("Alsation");
doggy.setsize(5);
ArrayList<Dog> dog2 = new ArrayList<Dog>();
dog2.add(doggy);
for (Dog d : dog2) {
System.out.println(d.getsize());
System.out.println(d.getbreed());
if (d.getsize() == 5) {
d.bark();
}
}
}
}
class Dog {
private int size;
private String breed;
public void setbreed(String breed) {
this.breed = breed;
}
public void setsize(int size) {
this.size = size;
}
public int getsize() {
return size;
}
public String getbreed() {
return breed;
}
public void bark() {
System.out.println("Bark!");
}
}
答案 0 :(得分:4)
我认为您可以包含一个用于初始化类的构造函数。您可以使用方法集将来修改对象值。构造函数如下:public SameNameLikeClass(type parameter1,...,type paramenter n){variables}。初始化将像新的Dog(breedValue,sizeValue)。
答案 1 :(得分:1)
您应该首先将其拆分为两个单独的.java文件,例如Dogprint2.java和Dog.java
Dogprint2.java
import java.util.*;
public class Dogprint2 {
public static void main(String[] args) {
Dog doggy = new Dog();
doggy.setbreed("Alsation");
doggy.setsize(5);
ArrayList<Dog> dog2 = new ArrayList<Dog>();
dog2.add(doggy);
for (Dog d : dog2) {
System.out.println(d.getsize());
System.out.println(d.getbreed());
if (d.getsize() == 5) {
d.bark();
}
}
}
}
和Dog.java
class Dog {
private int size;
private String breed;
public Dog(){
}
public Dog(String breed, int size){
this.breed = breed;
this.size = size;
}
public void setbreed(String breed) {
this.breed = breed;
}
public void setsize(int size) {
this.size = size;
}
public int getsize() {
return size;
}
public String getbreed() {
return breed;
}
public void bark() {
System.out.println("Bark!");
}
}
正如您所看到的,我在Dog类中添加了两个名为constructors的方法。 第一个,公共狗()&#39;创造了一只没有大小或品种的新狗。
另一方面,第二个是公共狗(String品种,int size)&#39;将与给定的参数创建一个新的狗。 构造函数是您希望在类中创建的,以便创建给定对象/类的新实例。
使用此功能,您将能够避免使用所有设置器,因为您在创建它时会知道狗的品种和大小。如果您想创建说100只狗并且它们都具有相同的品种和大小,那么您可以将它放在主方法的for循环中。如果他们没有相同的品种和大小,您可以从文件或标准输入中读取它们。在主方法中创建100只不同的狗最终将成为100行代码。
答案 2 :(得分:0)
只需在for循环中执行:
for (int i =0; i<100; i++) {
Dog doggy = new Dog();
doggy.setbreed("Alsation");//name you define in an array/list and can keep on repeating like array[i%array.length]
doggy.setsize(5);//numbers can be random?
dog2.add(doggy);
}