1 svar
238 visningar
Sankan123 3
Postad: 9 jan 14:34

Programmering 1 Hundregister

Hej tänkte kika ifall det finns nån här som kan hjälpa mig då vi har rätt så fullt på handledningen nu innan tentaperiod. Det är så att vi håller på att skapa ett Hundregister i Java programmering 1. Jag bifogar en pdf med instruktionerna för registret. Jag har nämligen fastnat på uppgift 3.3 (läs uppgift 3.3 i bifogad pdf) och sitter fast med 10 Failures, och tänkte kika ifall nån har några tips på vad jag missat att göra. Jag tror felet kan ligga i min CollectsOwner kod i och med att mina failures klagar på att min Owner klass inte är rätt implementerad. Utdrag ifrån instruktionerna: "Ta bort hundar och ägare från samlingarna
Slutligen måste också metoderna removeDog och removeOwner i samlingsklasserna
uppdateras för att undvika situationer där en hund finns kvar i samlingen medan
dess ägare tagits bort eller tvärt om.
Det finns flera möjliga lösningar här, men vi väljer den enklaste: det är helt enkelt
förbjudet att ta bort en hund med en ägare, eller en ägare som äger hundar."   

Är tacksam för all hjälp som går att få!

detta är mina failures (de blå markerade)
Här kommer min Owner, Dog, DogCollection och OwnerCollection: 

Dog:

public class Dog {

private int age;

private int weight;

private String breed;

private String name;

private Owner owner;

 

public Dog(String name, String breed, int age, int weight) {

this.name = normalizeName(name);

this.breed = normalizeBreed(breed);

this.age = age;

this.weight = weight;

 

}

 


private String normalizeName(String name) {

String normalizedName = name.trim().toLowerCase();

normalizedName = Character.toUpperCase(normalizedName.charAt(0)) + normalizedName.substring(1);

return normalizedName;

}

 


private String normalizeBreed(String breed) {

String normalizedBreed = breed.trim().toLowerCase();

normalizedBreed = Character.toUpperCase(normalizedBreed.charAt(0)) + normalizedBreed.substring(1);

return normalizedBreed;

}

 


public void setOwner(Owner owner) {

this.owner = owner;

 

}

 


public int addAge() {

if (age < Integer.MAX_VALUE) {

age++;

}

return age;

}

 


public double getTailLength() {

if (breed.equalsIgnoreCase("tax") || breed.equalsIgnoreCase("dachshund")) {

return 3.70;

} else {

return (weight * age) / 10.0;

}

}

 


public int getAge() {

return age;

}

 


public int getWeight() {

return weight;

}

 


public String getBreed() {

return breed;

}

 


public String getName() {

return name;

}

 

public Owner getOwner() {

return owner;

}

 


public String toString() {

return String.format("%s, %s, %d år, %d kg, svans=%.2f, Ägare: %s",

name, breed, age, weight, getTailLength(), (owner != null) ? owner.getName() : "Ingen ägare");

}

}

 

och:

import java.util.ArrayList;

import java.util.List;

 


public class Owner {

 


private String name;

private List<Dog> dogs;

 


public Owner(String name) {

setName(name);

dogs = new ArrayList<>();

}

 


private void setName(String name) {

if (name != null && !name.isEmpty()) {

this.name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();

} else {

throw new IllegalArgumentException(" ");

}

}

 


public String getName() {

return name;

}

 


public void addDog(Dog dog) {

if (dog.getOwner() == null) {

dogs.add(dog);

dog.setOwner(this);

} else {

System.out.println(" ");

}

}

 


public void removeDog(Dog dog) {

dogs.remove(dog);

dog.setOwner(null);

}

 


public ArrayList<Dog> getDogs() {

return new ArrayList<>(dogs);

}

 


public String toString() {

return "Owner: " + name;

}

}

 

och: 

 

import java.util.ArrayList;

import java.util.Arrays;

 


public class OwnerCollection {

private Owner[] owners;

private int size;

private ArrayList<Dog> dogsList;

 


public OwnerCollection() {

this.owners = new Owner[0];

this.size = 0;

this.dogsList = new ArrayList<>();

}

 


private void changeArraySize(int newSize) {

Owner[] newOwners = new Owner[newSize];

System.arraycopy(owners, 0, newOwners, 0, Math.min(size, newSize));

owners = newOwners;

}

 


private void removeOwnerAtIndex(int index) {

if (index == size - 1) {

changeArraySize(size - 1);

} else {

System.arraycopy(owners, index + 1, owners, index, size - index - 1);

changeArraySize(size - 1);

}

size--;

}

 


public boolean addOwner(Owner newOwner) {

if (containsOwner(newOwner.getName())) {

return false;

}

changeArraySize(size + 1);

owners[size++] = newOwner;

return true;

}

 


public boolean removeOwner(String ownerName) {

for (int i = 0; i < size; i++) {

if (owners[i].getName().equalsIgnoreCase(ownerName)) {

 

removeOwnerAtIndex(i);

 


 

for (Dog dog : new ArrayList<>(dogsList)) {

if (dog.getOwner().equals(owners[i])) {

dog.setOwner(null);

dogsList.remove(dog);

}

}

return true;

}

}

return false;

}

 


public boolean removeOwner(Owner ownerToRemove) {

for (int i = 0; i < size; i++) {

if (owners[i].equals(ownerToRemove)) {

 

removeOwnerAtIndex(i);

 


 

for (Dog dog : new ArrayList<>(dogsList)) {

if (dog.getOwner().equals(ownerToRemove)) {

dog.setOwner(null);

dogsList.remove(dog);

}

}

return true;

}

}

return false;

}

 


public boolean containsOwner(String ownerName) {

for (int i = 0; i < size; i++) {

if (owners[i].getName().equalsIgnoreCase(ownerName)) {

return true;

}

}

return false;

}

 


public boolean containsOwner(Owner otherOwner) {

for (int i = 0; i < size; i++) {

if (owners[i].equals(otherOwner)) {

return true;

}

}

return false;

}

 


public Owner getOwner(String ownerName) {

for (int i = 0; i < size; i++) {

if (owners[i].getName().equalsIgnoreCase(ownerName)) {

return owners[i];

}

}

return null;

}

 


public ArrayList<Owner> getOwners() {

Owner[] sortedOwners = Arrays.copyOf(owners, size);

Arrays.sort(sortedOwners, (a, b) -> a.getName().compareToIgnoreCase(b.getName()));

return new ArrayList<>(Arrays.asList(sortedOwners));

}

}

 

och: 

 

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Iterator;

 


public class DogCollection {

private ArrayList<Dog> dogList;

 


public DogCollection() {

this.dogList = new ArrayList<>();

}

 


public boolean addDog(Dog dog) {

if (dog != null) {

String dogName = dog.getName();

if (!containsDog(dogName)) {

return dogList.add(dog);

} else {

System.out.println("En hund med namnet " + dogName + " finns redan i samlingen.");

return false;

}

} else {

System.out.println("Kan inte lägga till hund om hund är null");

return false;

}

}

 


public boolean removeDog(String dogName) {

Iterator<Dog> iterator = dogList.iterator();

while (iterator.hasNext()) {

Dog dog = iterator.next();

if (dog.getName().equals(dogName)) {

 

Owner owner = dog.getOwner();

if (owner != null) {

owner.getDogs().remove(dog);

}

 


iterator.remove();

return true;

}

}

return false;

}

 


public boolean removeDog(Dog dog) {

if (dogList.remove(dog)) {

 

Owner owner = dog.getOwner();

if (owner != null) {

owner.getDogs().remove(dog);

}

 


return true;

}

return false;

}

 


public boolean containsDog(String dogName) {

for (Dog dog : dogList) {

if (dog.getName().equals(dogName)) {

return true;

}

}

return false;

}

 


public boolean containsDog(Dog otherDog) {

String otherDogName = otherDog.getName();

return containsDog(otherDogName);

}

 


public Dog getDog(String dogName) {

for (Dog dog : dogList) {

if (dog.getName().equals(dogName)) {

return dog;

}

}

return null;

}

 


public ArrayList<Dog> getDogs() {

ArrayList<Dog> sortedDogs = new ArrayList<>(dogList);

Collections.sort(sortedDogs, Comparator.comparing(Dog::getName));

return sortedDogs;

}

 


public ArrayList<Dog> getDogsTail(double tailLength) {

ArrayList<Dog> result = new ArrayList<>();

for (Dog dog : dogList) {

if (dog.getTailLength() >= tailLength) {

result.add(dog);

}

}

return result;

}

}

Sankan123 3
Postad: 9 jan 14:38

såg att det inte gick att bifoga pdf så här kommer instruktionerna istället:

Svara
Close