关于JAVA中的对象的几个问题

时间:2013-11-07 03:08:58

标签: java object constructor

我对编程很陌生,本周的作业基于java中的对象。

以前是我的代码

public class Animal {
float mass;
String name;
int legs;

// Exercise 6-6
public Animal(String randomName) {
    name = randomName;
    legs = 0;
    mass = 0;
}

// Exercise 6-7
public Animal(float one, String two, int three) {
    mass = one;
    name = two;
    legs = three;
}

//Exercise 7
public String toString(){
    return "name =" + name + "legs=" + legs + "mass=" + mass;
}

public void massSetter() {

}

public String getName() {
    return name;
}

public int getLegs() {
    return legs;
}
}

然后有这个

public class Zoo {
private Animal[] park;

// Exercise 9
public Zoo() {
    Animal[] park = new Animal[10];
}

// Exercise 10
public void addAnimal(Animal first) {
    for (int i = 0; i < 10; i++) {
        if (park[i] != null) {
            park[i] = first;
            i = 10;
        } else if (i == 9) {
            System.out.println("The zoo is full!");
        }

    }
}

// Exercise 11
public void feed() {
    for (int i = 0; i < 10; i++) {
        park[i].mass *= 1.1;
    }
}

public String toString() {
    return "The zoo is capable of keeping " + park.length + "animals"
            + '\n'
            + "The following is the list of animals currently in the zoo."
            + '\n' + "cage 1 status: " + park[0] + '\n' + "cage 2 status: "
            + park[1] + '\n' + "cage 3 status: " + park[2] + '\n'
            + "cage 4 status: " + park[3] + '\n' + "cage 5 status: "
            + park[4] + '\n' + "cage 6 status: " + park[5] + '\n'
            + "cage 7 status: " + park[6] + '\n' + "cage 8 status: "
            + park[7] + '\n' + "cage 9 status: " + park[8] + '\n'
            + "cage 10 status: " + park[9];
}

public void print() {
    System.out.println(park.toString());
}

public int totalLegs() {
    int totalLeg = 0;
    for (int i = 0; i < 10; i++) {
        totalLeg += park[i].legs;
    }
    return totalLeg;
}
}

最后

public class TestZoo {
public static void main(String[] args){
    Zoo zoo = new Zoo();

}
}

我有两个问题。

首先,从Zoo类中的toString方法可以看出,我的return语句太长了。我尝试使用for循环,但我似乎无法在返回语句中真正做到这一点,所以我想知道是否有更简单的方法。

第二个问题是练习告诉我填充我在TestZoo类中创建的对象动物园,其名称为elephant和spider。我想知道我怎么能这样做。

6 个答案:

答案 0 :(得分:2)

1)您可以使用StringBuilder并循环来构建字符串。请参阅文档here 2)你有方法addAnimal(Animal first)用于将动物添加到动物园。

答案 1 :(得分:0)

  1. toString与任何其他方法一样。您可以创建变量。

    String value =“动物园能够保持”+ park.length +“动物”; value = value +'\ n'; //等 返回值;

  2. 这样的东西

    zoo.add(new Animal(“zebra”));

答案 2 :(得分:0)

对于toString():使用带有for循环的StringBuilderString.format()相结合,以大大缩短篇幅。

循环非常重要,因为您基本上是在回显整个数组的内容。请确保Animal已覆盖toString()以提供有关该实例的重要信息。

public String toString() {
    StringBuilder ret = new StringBuilder("The zoo is capable of keeping " + park.length + "animals");
    ret.append("\n");
    ret.append("The following is the list of animals currently in the zoo.");

    for(int i = 0; i < park.length; i++) {
        ret.append(String.format("\ncage %d status : " + park[i].toString()));
    }
    return ret.toString();
}

为了填充你的动物园,给定Animal的构造函数,我认为传递名称“spider”就足够了。

Animal spider = new Animal("spider");
Zoo zoo = new Zoo();
zoo.addAnimal(spider);

答案 3 :(得分:0)

Q1:... return语句太长了......在return语句中无法做到这一点 A:分开做。在循环中构建显示String(或StringBuilder),然后返回结果。

Q2:......填满对象动物园 答:您需要创建新动物并为每个动物调用一次addAnimal。 初始化的动物名称和for循环数组可能会有所帮助: 字符串名称[] = {“aardvark”,“bison”,“cat”,“dog”,“eagle”,“elephant”,“giraffe”,“horse”,“owl”,“emu”};

答案 4 :(得分:0)

您可以这样做:

String result = "The list:\n";
for (int i = 0; i< 10; i++) {
    result = result + "cage " + i + " status:" + park[i] + "\n"; 
}
return result;

这里“+”连接相邻的字符串,你一次建立一行的总结果。

但是使用字符串连接有点效率低(虽然在大多数情况下完全适用于toString,因为这通常用于诊断),所以很多时候最好使用像StringBuilder这样的东西,特别是对于主线“生产”方法

答案 5 :(得分:0)

  

首先,从Zoo类中的toString方法可以看出,我的return语句太长了。我尝试使用for循环,但我似乎无法在返回语句中真正做到这一点,所以我想知道是否有更简单的方法。

public String toString() {
    String str = "The zoo is capable of keeping " + park.length + "animals\nThe following is the list of animals currently in the zoo.";
    for(int i = 0; i < park.length; i++)
        str += '\n' + "cage " + i + " status: " + park[i];

    return str;

}
  

第二个问题是练习告诉我填充我在TestZoo类中创建的对象动物园,其名称为elephant和spider。我想知道我怎么能这样做。

public class TestZoo {
    public static void main(String[] args){
        Zoo zoo = new Zoo();
        Animal spider = new Animal("spider");
        zoo.addAnimal(spider);
    }
}

如果你有很多动物,上述方法实际上是不可行的。因此,创建一个String s数组(字符串因为你需要一个来创建一个动物)

String[] arr = {"Spider", "Elephant"};

然后为每个字符串添加创建动物,并添加动物

for(int i = 0; i < arr.length; i++)
{
    Animal a = new Animal( arr[0] );
    zoo.addAnimal(a);
}

或者只是

for(int i = 0; i < arr.length; i++)
    zoo.addAnimal(new Animal(arr[0]));