我有这个输出所有宠物的工作代码,但是如何再次迭代它并只打印出户外的猫呢?在我的例子中,我只有一只户外猫作为第三个对象(在第三个参数中有false的对象)。
import java.util.Arrays;
public class Driver {
public static void main(String[ ] args) {
Pet[] pets = new Pet[4];
pets[0] = new Dog("Spot", 5, "bulldog");
pets[1] = new Cat("Lucky", 1, true);
pets[2] = new Cat("Kitty", 8, false);
pets[3] = new Dog("Bud", 9, "great dane");
Arrays.sort(pets);
for(int i = 0; i < pets.length; i++) {
System.out.println(pets[i]);
System.out.println();
}
}
}
发布于 2017-03-15 12:49:41
根据其他答案,instanceof是确定对象类型的好方法。但您也问过如何只打印户外猫。你提到了第三个对象"Kitty“是室外的,这表明构造函数中的false是”室内“值。
检查每个元素的instanceof Cat。如果这是真的,则可以将其强制转换为Cat (您知道它不会失败,因为instanceof Cat返回true ),然后调用返回室内值的方法。这里我用了!操作员只打印不在室内的猫。
for(int i = 0; i < pets.length; i++) {
if (pets[i] instanceof Cat) {
Cat cat = (Cat) pets[i];
if (!cat.getIndoorStatus()) {
System.out.println("Outdoor cat: " + cat);
}
}
}
发布于 2017-03-15 12:42:22
您可以使用instanceOf运算符。
for(int i = 0; i < pets.length; i++) {
if (pets[i] instanceof Dog) {
System.out.println(pets[i]);
System.out.println();
}
}
发布于 2017-03-15 12:45:34
for(int i = 0; i < pets.length; i++) {
if(pets[i] instanceof Cat){
Cat cat = (Cat) pets[i];
if(!cat.outdoor){
// print pets[i] here
}
}
}
https://stackoverflow.com/questions/42801187
复制相似问题