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