我对编程很陌生,本周的作业基于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。我想知道我怎么能这样做。
答案 0 :(得分:2)
1)您可以使用StringBuilder
并循环来构建字符串。请参阅文档here
2)你有方法addAnimal(Animal first)
用于将动物添加到动物园。
答案 1 :(得分:0)
toString与任何其他方法一样。您可以创建变量。
String value =“动物园能够保持”+ park.length +“动物”; value = value +'\ n'; //等 返回值;
像
这样的东西zoo.add(new Animal(“zebra”));
答案 2 :(得分:0)
对于toString()
:使用带有for循环的StringBuilder
与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
的构造函数,我认为传递名称“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]));