Tullballj Skrevet 28. mars 2007 Del Skrevet 28. mars 2007 (endret) Jeg har en klasse hvor jeg skal skrive inn foringstider. Når jeg prøver å skrive inn f. eks 7 i det ene feltet og 13 i det andre feltet så retunerer den false. Uansett hva jeg prøver så får jeg false. Det går ikke å legge til foringstider. Hva er galt? import java.util.HashSet; /** * Klassen Enclosure er en innhegning som samler dyr av en type. * */ public class Enclosure { private String name; private String species; // dyreart // konstanter som brukes til å aksessere foringstidspunktene. public final static int MORNING = 0; public final static int AFTERNOON = 1; // Use of a HashSet makes it impossible to add an animal more than once to a collection. private HashSet<ZooAnimal> animals; private int[] feedingPlan; public static String notDefined = " "; private int maxNumberofAnimals; /** * Konstruktør som angir navn på innhegningen og type dyr * @param name navn på innhegningen * @param animalTYpe navn på den type dyr det finnes i denne innhegningen. * Dette må være navnet på klassen med dyr som innhegningen kan inneholde. */ public Enclosure(String name, String animalType, int maxNumberofAnimals) { this.name = name.trim(); species = animalType.trim(); // Create the containers for animals animals = new HashSet<ZooAnimal>(); // we only need to store two items in this list feedingPlan = new int[2]; this.maxNumberofAnimals = maxNumberofAnimals; } /** * Metode som henter navnet på innhegningen * @return Navnet på innhegningen */ public String getName() { return name; } /** * Metode som henter beskrivelse av art som befinner seg i innhegningen. * @return Arten som finnes i innhegningen */ public String getSpecies() { return species; } /** * Add a animal to the enclosure. If the animal is not the same species that * the enclosure is defined for, the animal will not be inserted, and the method return false. * @param The animal to be added * @return true if the animal is of the right species, false otherwise. */ public boolean addAnimal(ZooAnimal animal) { String classType = animal.getClass().getName(); if ((classType == species) && (getNumberOfAnimals() < maxNumberofAnimals)) { animals.add(animal); return true; } else return false; } /** * Remove an animal from the zoo. This happens if we sell an animal to * another zoo or when it dies. * @param animal The animal that is to be removed from the zoo. */ public void removeAnimal(ZooAnimal animal) { // deleger oppgaven til samlingen animals.remove(animal); // remove it from the collection } /** * Get the number of animals in the enclosure * @return The number of animals in this enclosure */ public int getNumberOfAnimals() { return animals.size(); } /** * Sett sammen en utskrift som inneholder navn på innhegning, art og antall dyr. * @return Formatert oversikt over navn på innhegning, type dyr og antall dyr. */ public String listNumberOfAnimals() { return "Innhegning: " + getName() + "\n\t Dyr: " + getSpecies() + "\n\tAntall dyr:" + getNumberOfAnimals() +"\n"; } /** * Sett matingstidspunktet for dyrene - hele timer. Bruk av Time med fastsatte verdier forhindrer * klienter fra å legge til annet enn ett foringstidspunkt om morgenen og ettermiddagen. * Hvis foringstidspunkt er utenfor gyldige tider: morgen (7-13) og ettermiddag (15-18), gjøres ingenting. * @param feedingTime En tid på dagen når dyrene blir matet. * @param time Spesifiserer hvorvidt foringstiden gjelder for morgen eller ettermiddag. * @return true hvis foringstidspunktet var godkjent, false ellers. */ public boolean setFeedingTime(int feedingTime, int time) { int t = -1; boolean validFeedingtime = false; // Vi ønkser å være sikker på at matingstidspunktene for morgen og ettermiddags er sortert korrekt. switch (time) { case MORNING: if (checkFeedingTime(feedingTime, 7, 13)) validFeedingtime = true; t = 0; break; case AFTERNOON: if (checkFeedingTime(feedingTime, 15, 18)) validFeedingtime = true; t = 1; break; default: // for all other situations, do nothing. break; } if (validFeedingtime) feedingPlan[t] = feedingTime; return validFeedingtime; } /** * Hjelpemetode for å teste om verdien for matingstidspunkt er mellom gyldige grenseverdier. * @param value Spesifisert foringstidspunkt * @param low Den laveste verdi som aksepteres for denne situasjonen. * @param high Den høyeste verdi som aksepteres for denne situasjonen. */ private boolean checkFeedingTime(int value, int low, int high) { // returnerer sant (true) hvis verdien ligger mellom low og high return ( value >= low && value <= high); } /** * Slår sammen kl.slett og dyretype og legger disse samlet i en array. * Det gjør at det blir mindre arbeid for klienten. * @return En array av tekstrenger med elem av typen "Kl. 8 Dyreart" */ public String[] getFeedingPlan() { String[] feeding = new String[2]; for (int i = 0; i < feedingPlan.length; i++ ) { if (feedingPlan[i] == 0) { feeding[i] = notDefined + species; } else { feeding[i] = "Kl. "; if (feedingPlan[i] < 10) feeding[i] += 0; // Legg til en 0 for tall under 10 slik at vi får 08 feeding[i] += feedingPlan[i] + " " + species; } } return feeding; } /** * toString returnerer en representasjon av objektet. */ public String toString() { String tmp = "Innhegningen " + getName() + " inneholder " + getNumberOfAnimals() + " dyr.\n"; tmp += "Dette er: \n"; for (ZooAnimal animal : animals) tmp += animal; return tmp+ "\n"; } } Endret 28. mars 2007 av NestenUtenkunnskap Lenke til kommentar
Tullballj Skrevet 28. mars 2007 Forfatter Del Skrevet 28. mars 2007 fant ut av det. Skriver f. eks 9 i det ene feltet ogs 0 eller 1 i det andre feltet for formiddag eller kveld. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå