2

我对编程很陌生,本周我的任务是基于 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 循环,但我似乎无法在 return 语句中真正做到这一点,所以我想知道是否有更简单的方法。

第二个问题是,练习告诉我用大象和蜘蛛之类的名称填充我在 TestZoo 类中创建的对象动物园。我想知道我怎么能做到这一点。

4

6 回答 6

2

1)您可以使用StringBuilder和循环来构建一个字符串。请参阅此处的文档。
2)你有addAnimal(Animal first)添加动物到动物园的方法。

于 2013-11-07T03:12:39.290 回答
0
  1. toString 与任何其他方法一样。您可以创建变量。

    String value = "动物园可以养" + park.length + "animals"; 值 = 值 + '\n'; //等返回值;

  2. 类似的东西

    zoo.add(new Animal("斑马"));

于 2013-11-07T03:13:19.947 回答
0

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

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 类中创建的对象动物园。我想知道我怎么能做到这一点。

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

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

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]));
于 2013-11-07T03:25:46.530 回答
0

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

Q2:...填充对象 zoo A:您需要创建新动物并为每个动物调用一次 addAnimal。初始化的动物名称数组和 for 循环可能会有所帮助: String names[]= {"aardvark", "bison", "cat", "dog", "eagle", "elephant", "giraffe", "horse ", "猫头鹰", "鸸鹋"};

于 2013-11-07T03:19:32.200 回答
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 之类的东西,特别是对于主线“生产”方法。

于 2013-11-07T03:22:49.957 回答
0

对于您的toString():使用 aStringBuilder与 for 循环结合使用,String.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,我认为传递名称“蜘蛛”就足够了。

Animal spider = new Animal("spider");
Zoo zoo = new Zoo();
zoo.addAnimal(spider);
于 2013-11-07T03:18:44.060 回答