如何执行循环遍历字符串数组的if else语句?

时间:2015-12-09 00:13:49

标签: java arrays if-statement

我基本上是在写一个虚拟动物园。我有一个动物类,其中包含一个名为eats的数组,其中包含一串食物。我有其他课程,如狮子和老虎,这些课程延伸到我的动物课程。在这些课程中,我已经指定了他们吃的食物,因为这对每只动物来说都是独特的。例如,狮子吃牛排和芹菜。我现在被要求在我的动物类中创建一个canEat()方法,如果该特定动物可以吃那种食物,它基本上会返回true。我该怎么做呢?

这是我的动物类

public abstract class Animal {
    String[] eats = new String[] {"steak", "celery", "fish", "fruit"};

    public boolean canEat() {

    }
}

以下是我如何指定每个特定动物在他们尊敬的课程中可以吃到的东西

public class Lion extends Animal {
     public Lion (String[] eats) {
          super(new String[] {"steak", "celery"});
     }
}

在此先感谢,我希望我能清楚地解释这一点

5 个答案:

答案 0 :(得分:2)

按如下方式定义canEat方法:

public boolean canEat(String food) {
    return Arrays.asList(eats).contains(food);
}

以下是如何使用它:

public static void main(String args[]) {
    Lion lion = new Lion(new String[] {"steak", "meat", "otherFood"});

    System.out.println("Can the lion eat steak ? " + lion.canEat("steak"));
    // System.out: Can the lion eat steak ? true

    System.out.println("Can the lion eat meat loaf ? " + lion.canEat("meat loaf"));
    // System.out: Can the lion eat meat loaf ? false
}

答案 1 :(得分:0)

您可以将数组转换为字符串列表List<String>,然后检查列表contains是否为食物(作为参数传递给canEat)。将您的canEat修改为以下

public boolean canEat(String food) {
    List<String> eatsList = Arrays.asList(eats); 
    //if(eatsList.contains(food)) { 
    //   return true; 
    //} else {
    //  return false; 
    //}

    //as pointed out in comments would do exactly as above four lines of code
    return eatsList.contains(food); 
}

然后当你创建对象时,你调用canEat()并将食物作为参数传递给它。

lion.canEat("fish"); 

答案 2 :(得分:0)

使用for循环解决此问题的方法很多:

public boolean canEat(String food) {
    for (int i = 0; i < eats.length; i++) {
        if (eats[i].equals(food))
            return true;
    }
    return false;
}

答案 3 :(得分:0)

您需要略微更改其中一个课程,例如,您可以执行以下操作...

public abstract class Animal {
    String[] eats;

    public Animal(String[] canEat) {
        eats = canEat;
    }

    public boolean canEat(String food) {
        boolean canEat = false;
        for (String eatiable :eats) {
            if (eatiable.equals(food)) {
                canEat = true;
                break;
            }
        }
        return canEat;
    }
}

同样,您可以制作canEat abstract并让子课处理它。

这是一个区分大小写的比较,如果您需要不区分大小写的比较,则可以使用eatiable.equalsIgnoresCase(food)代替

答案 4 :(得分:0)

所以答案可以是

public abstract class Animal {
    private String[] eats;

public Animal(String[] eats) {
    this.eats = eats;
}

public boolean canEat(String food) {
    return Arrays.asList(eats).contains(food);
}

}

public class Lion extends Animal {
     public Lion (String[] eats) {
          super(eats);
     }
}