如何实现多类应用程序

时间:2013-12-18 21:21:21

标签: java class oop

这是动物园经理编码:

public class ZooManager {
public void feedAnimals(Animals a, Food[] arrayFood) {
    Food temp = null;
    for (int i = 0; i < arrayFood.length; i++) {
        if (arrayFood[i].getFoodName().equals(a.getTypeOfFood())) {
            arrayFood[i].setAmount(arrayFood[i].getAmount() - 1);
            System.out.print("Animal is fed.");
        }
    }
    System.out.print(temp);
}
public void isFoodEmpty(Food[] arrayFood) {
    for (int i = 0; i < arrayFood.length; i++) {
        if (arrayFood[i] == null) {
            System.out.print("True");
        } else {
            System.out.print("False");
      }
    }
  }
}

这是主要应用程序的代码:

import java.util.Scanner;
public class ZooApp {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    Animals[] a = new Animals[4];
    for (int i = 0; i < 4; i++) {
        System.out.print("Enter the animal name: ");
        String an = in.nextLine();
        System.out.print("What type of food do they eat: ");
        String tof = in.nextLine();
        a[i] = new Animals(an, tof);
    }
    Food[] b = new Food[3];
    for (int i = 0; i < 3; i++) {
        System.out.print("Enter the type of food: ");
        String f = in.nextLine();
        System.out.print("Enter the amount: ");
        int am = in.nextInt();in.nextInt();
        b[i] = new Food(f, am);
    }
    ZooManager z= new ZooManager();
    System.out.print(z.feedAnimals(a[i], b));
    System.out.print(z.isFoodEmpty(b[i]));
  }
}

我在主应用程序的两个最终打印出错时出错。第一个是“那里不允许空洞类型”。和“变量我找不到。”第二个出局说“isFoodEmpty不能给出类型:食物,必需:食物[]。”感谢您提出任何建议或帮助。

1 个答案:

答案 0 :(得分:3)

你的isFoodEmpty函数是一个void,所以第一个错误告诉你你不能打印它,因为它不返回任何东西。其次,您将Food的单个实例传递给正在寻找数组的函数。那是第二个错误。另请注意,变量i仅在for循环的范围内定义,因此您不能在循环之外使用它。

编辑:

目前您的isFoodEmpty无效。你有两个选择之一:

public void isFoodEmpty(Food[] arrayFood) {
    for (int i = 0; i < arrayFood.length; i++) {
        if (arrayFood[i] == null) {
            System.out.print("True");
        } else {
            System.out.print("False");
      }
    }
  }
}
[...]
isFoodEmpty(b);    // it already prints within the function

public boolean isFoodEmpty(Food[] arrayFood) {
    for (int i = 0; i < arrayFood.length; i++) {
        if (arrayFood[i] == null) {
            return true;
        } else {
            return false;
      }
    }
  }
}
[...]
System.out.println(isFoodEmpty(b));    // print the boolean that it returns

无论哪种方式,您可能想要检查该函数的逻辑,因为即使数组中的一个元素为null,它也将返回空。 (你可以有20个食品,然后是一个空值,它会返回true)。