Program wyświetla wyniki błędnie

0

Witajcie jestem początkujący. Próbuję rozwiązać zadanie 1A stąd http://users.pja.edu.pl/~s7131/gui/files/lab3.htm.
Oto mój kod:

public class Pies {
	int id;
	String wlascicielImie;
	String wlascicielNazw;
	String imie;
	String masc;
	int wiek;

	public Pies(int id, String imie, String masc, int wiek, String wlascicielImie, String wlascicielNazw) {
		this.id = id;
		this.wlascicielImie = wlascicielImie;
		this.wlascicielNazw = wlascicielNazw;
		this.imie = imie;
		this.masc = masc;
		this.wiek = wiek;
	}

	public String toString() {
		return "-------------------------------\n" + "identyfikator:         " + id + "\n" + "WLASCICIEL: " + wlascicielImie + " " + wlascicielNazw + "\n\n" + "IMIE: " + imie + "\n" + "masc: " + masc + "\n" + "wiek: " + wiek + "\n"
				+ "-------------------------------\n";
	}

	public static void main(String[] args) {
		Pies sfora[] = { new Pies(76589, "As", "biało-czarny", 18, "Anna", "Nowak"), new PiesRasowy(45321, "Labrador", "Elf", "czarny", 25, "Agus", "Mati", "Barbara", "Klopotek"),
				new Pies(102467, "Kumpel", "brazowy, podpalany", 89, "Zennon", "Kula"), new PiesRasowy(9678, "York", "Beta", "brazowy", 8, "Emka", "Fidelus", "Alicja", "Kot") };

		for (int i = 0; i < sfora.length; i++)
			System.out.println(sfora[i] + "\n\n");
	}
}

public class PiesRasowy extends Pies {
	int id;
	String wlascicielImie;
	String wlascicielNazw;
	String imie;
	String masc;
	int wiek;
	String rasa;
	String matka;
	String ojciec;

	public PiesRasowy(int id, String imie, String masc, String rasa, int wiek, String ojciec, String matka, String wlascicielImie, String wlascicielNazw) {
		super(id, imie, masc, wiek, wlascicielImie, wlascicielNazw);
		this.rasa = rasa;
		this.ojciec = ojciec;
		this.matka = matka;
	}

	public String toString() {
		return super.toString() + "Pies rasowy \n-------------------------------\n" + "RASA: " + rasa + "\n" + "MATKA: " + matka + "\n" + "OJCIEC: " + ojciec + "\n";
	}

}

Z konsoli:

-------------------------------
identyfikator:         9678
WLASCICIEL: Alicja Kot

IMIE: York
masc: Beta
wiek: 8
-------------------------------
Pies rasowy 
-------------------------------
RASA: brazowy
MATKA: Fidelus
OJCIEC: Emka

Na końcu niestety myli mi w przypadku psa rasowego (a raczej na pewno przeze mnie) rasę, imię i maść, przesunięte są względem siebie. Proszę o pomoc.

1

Twoje błędy i usterki:

  • zły format identyfikatora,
  • zły format wieku,
  • imię psa wypisane małymi literami,
  • brak informacji o liczebności miotu,
  • bezsensowne powtórzenie pól w klasie PiesRasowy,
  • przestawiona kolejność argumentów w konstruktorze klasy PiesRasowy.

Moim zdaniem przykładowe rozwiązanie zawiera dwa błędy:

  • Nie ma sensu, żeby czasami wyświetlać tekst "lata(a)" a czasami "lat(a)", powinno być zawsze "lat(a)" albo test dopasowany gramatycznie "2 lata", "7 lat". Ja wybrałem pierwszą wersję
  • W konstruktorze nie jest podawana liczebność miotu, ale ta liczebność jest wypisywana. Można ją losować, ale wtedy wyniki będą różne od tych na stronie.
import java.util.*;

public class PiesRasowy extends Pies {
    String rasa;
    String matka;
    String ojciec;
    Random r = new Random();
 
    public PiesRasowy(int id, String rasa, String imie, String masc, int wiek, String matka, String ojciec, String wlascicielImie, String wlascicielNazw) {
        super(id, imie, masc, wiek, wlascicielImie, wlascicielNazw);
        this.rasa = rasa;
        this.ojciec = ojciec;
        this.matka = matka;
    }
 
    public String toString() {
        return super.toString() + 
               "Pies rasowy \n-------------------------------\n" + 
               "RASA: " + rasa + "\n" + 
               "MATKA: " + matka + "\n" + 
               "OJCIEC: " + ojciec + "\n" +
               "MIOT: " + (r.nextInt(5) + 1) + "\n";
    } 
}

public class Pies {
    int id;
    String wlascicielImie;
    String wlascicielNazw;
    String imie;
    String masc;
    int wiek;
 
    public Pies(int id, String imie, String masc, int wiek, String wlascicielImie, String wlascicielNazw) {
        this.id = id;
        this.wlascicielImie = wlascicielImie;
        this.wlascicielNazw = wlascicielNazw;
        this.imie = imie;
        this.masc = masc;
        this.wiek = wiek;
    }
 
    public String toString() {
        return "-------------------------------\n" + 
               "identyfikator:         " + String.format("%08d",id) + "\n" + 
               "WLASCICIEL: " + wlascicielImie + " " + wlascicielNazw + "\n\n" + 
               "IMIE: " + imie.toUpperCase() + "\n" + 
               "masc: " + masc + "\n" + 
               "wiek: " + opiszWiek() + "\n" +
               "-------------------------------\n";
    }
    
    private String opiszWiek(){
        int years = wiek/12;
        int month = wiek % 12;
        String result = "";
        switch(years)
        {
            case 0:
                break;
            case 1:
                result+="1 rok";
                break;
            default:
                result+=years+" lat(a)";
                break;                
        }
        if(years > 0)
        {
            result+=" i ";
        }
        switch(month)
        {
            case 1:
                result+="1 miesiac";
                break;
            case 2:
            case 3:
            case 4:
                result+=month+" miesiace";
                break;
            default:
                result+=month+" miesiecy";
        }
        return result;
    }    
 
    public static void main(String[] args) {
        Pies sfora[] = { new Pies(76589, "As", "biało-czarny", 18, "Anna", "Nowak"), new PiesRasowy(45321, "Labrador", "Elf", "czarny", 25, "Agus", "Mati", "Barbara", "Klopotek"),
                new Pies(102467, "Kumpel", "brazowy, podpalany", 89, "Zennon", "Kula"), new PiesRasowy(9678, "York", "Beta", "brazowy", 8, "Emka", "Fidelus", "Alicja", "Kot") };
 
        for (int i = 0; i < sfora.length; i++)
            System.out.println(sfora[i] + "\n\n");
    }
}
0

Dzięki wielkie za rady, rzeczywiście pominąłem te kilka szczegółów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1