2013-12-18 4 views
1

Это менеджер зоопарка кодирование:Как реализовать несколько классы Application

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])); 
    } 
} 

У меня есть ошибка в два финале из отпечатков по основному приложению. Первый заключается в том, что «тип пустоты там не допускается». и «переменная i не может быть найдена». Второй из них говорит, что «isFoodEmpty не может быть присвоено типу:« Еда », требуется: еда []». Спасибо за любой совет или помощь.

+0

ну, feedAnimals *** ***, поэтому компилятор прав жаловаться. Что бы вы хотели (например, что должна была напечатать функция печати?) – fvu

+0

Что касается переменной 'i' не найденной, то это потому, что она не существует за пределами цикла for, который ее создает. – NigelK

ответ

3

Ваша функция isFoodEmpty является пустой, поэтому первая ошибка говорит вам, что вы не можете ее распечатать, потому что она ничего не возвращает. Во-вторых, вы передаете отдельный экземпляр Food в функцию, которая ищет массив. Это вторая ошибка. Также обратите внимание, что переменная i определяется только в пределах цикла for, поэтому вы не можете использовать ее вне цикла.

Edit:

В настоящее время ваш 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 

В любом случае, вы можете проверить логику этой функции, так как он будет возвращать пустым, если хотя бы один из элементов в массиве нулевой. (У вас могло бы быть 20 продуктов питания, затем одно нулевое значение, и оно вернет true).

Смежные вопросы