Klasa Appender - dodawanie napisów

0

Cześć. Poniżej treść zadania.

Stworzyć klasę Appender z polem String src (źródłwoy napis) i dwoma konstruktorami:
public Appender() - inicjuje src napisem pustym
public Appender(String s) - inicjuje src napisem s.

W klasie zdefiniować metodę Appender append(String app, int n), która do źródłowego napisu src dołaczan-razy powielony napis reprezentowany przez app.

Zapewnić zgłaszanie wyjątków gdy wystąpią błędy w podawanych argumentach konstruktora i/lub metody append.

Przyklad - poniższy kod:

  public static void main(String[] args) {
    Appender ap = new Appender("Ala");
    ap.append(" ma kota", 3).append( " i psa", 2);
    System.out.println(ap);
    ap.append(" ojej", 3);
    System.out.println(ap);
  }

winien wyprowadzić na konsolę:
Ala ma kota ma kota ma kota i psa i psa
Ala ma kota ma kota ma kota i psa i psa ojej ojej ojej

Pomoc:

  • zadanie można rozwiązać korzystając z operatora konkatenacji łańcuchów znakowych.
  • n-krotne powtórzenie instrukcji ins można uzyskac przez while (n-- >0) ins;
  • jako klasę wyjątku dla sygnalizacji błędnych argumentów najlepiej wybrać IllegalArgumentException

Problem polega na wyświetleniu wymaganego w treści zadania napisu. Moja metoda nie wyświetla tylko " i psa i psa".

    Appender append(String app, int n){
        Appender pomoc = new Appender(napis);
        while(n-- > 0){
            napis = napis + app;
        }
        return pomoc;
    }

Ale jeśli zrobię:

public static void main(String[] args) {
    Appender ap = new Appender("Ala");
    ap.append(" ma kota", 3);
    ap.append( " i psa", 2);
    System.out.println(ap);
    ap.append(" ojej", 3);
    System.out.println(ap);

Wszystko działa OK.

Z wyjątkiem też poproszę o pomoc bo tego nie ogarniam.

0

Metoda append jest błędna:

Appender append(String app, int n){       
        while(n-- > 0){
            src = src + app;
        }
        return this;
    }

Wycofuje się, jednak jest trywialne.
O wyjątkach nie będę pisał, wyjątków nie powinno się stosować do kontroli poprawności argumentów. Typ argumentów sprawdzi kompilator, a sensowność (tzn. czy n jest większe od zera należy sprawdzić instrukcją if.
imho, zadanie i wskazówki są mało sensowne. Używanie operatora konkatenacji do sklejania dużej ilości napisów jest ogromnym błędem.

0

Rozumiem że mój ćwiczeniowiec błędnie formułuje zadania :D

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