Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何执行在字符串数组上循环的if-else语句?_Java_Arrays_If Statement - Fatal编程技术网

Java 如何执行在字符串数组上循环的if-else语句?

Java 如何执行在字符串数组上循环的if-else语句?,java,arrays,if-statement,Java,Arrays,If Statement,我基本上是在写一个虚拟动物园。我有一个动物类,它包含一个名为eats的数组,其中包含食物串。我还有其他的课程,比如狮子和老虎,它们扩展了我的动物课程。在这些类别中,我指定了它们吃什么食物,因为这对每种动物来说都是独一无二的。例如,狮子吃牛排和芹菜。现在我被要求在我的animal类中创建一个canEat()方法,如果特定的动物可以吃这种食物,它基本上会返回true。我该怎么做呢 这是我的动物课 public abstract class Animal { String[] eats = n

我基本上是在写一个虚拟动物园。我有一个动物类,它包含一个名为eats的数组,其中包含食物串。我还有其他的课程,比如狮子和老虎,它们扩展了我的动物课程。在这些类别中,我指定了它们吃什么食物,因为这对每种动物来说都是独一无二的。例如,狮子吃牛排和芹菜。现在我被要求在我的animal类中创建一个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"});
     }
}

提前感谢,我希望我清楚地解释了这一点

定义
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
}

您可以将数组转换为字符串列表,如
List
,然后检查List
是否包含食物(作为参数传递给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); 
}

使用for循环有多种解决方法:

public boolean canEat(String food) {
    for (int i = 0; i < eats.length; i++) {
        if (eats[i].equals(food))
            return true;
    }
    return false;
}
public boolean canEat(字符串食物){
for(int i=0;i
您需要稍微更改一个类,例如,您可以执行以下操作

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
抽象化
,并让子类处理它

这是区分大小写的比较,如果需要区分大小写的比较,可以使用
eatable.equalsIgnoresCase(food)
,这样就可以得到完整的答案

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 boolean canEat(){
需要先通过某项内容,然后才能进行检查,例如
public boolean canEat(字符串食物){
你不觉得有点多余吗?:)我知道,但我不确定他是否可以使用列表。这就是为什么我向他展示了如何将数组转换为列表。不是关于列表部分,而是关于返回:D再看一遍:p@Raf不,他们的意思是你可以做
返回eatsList.contains(食物)
if else
语句是多余的现在我明白你在说什么了。我正在慢慢地到达那里。不过谢谢你指出。
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);
     }
}