Programowanie obiektowe - Lista

Odpowiedz Nowy wątek
2018-12-13 13:42
0

Cześć, chciałem zrobić poniższe zadanie, tylko nie mam pojęcia czy w ogóle dobrze zrozumiałem o co chodzi, wiem na pewno, że i tak nie działa (pewnie ze względu że return w metodach jest w pętlach, tylko nie wiem jak to inaczej zrobić)
Polecenie:
Napisać klasę Lista , której zadaniem będzie przechowywanie listy liczb całkowitych. Klasa ta ma mieć następujące pola prywatne:
• int [] liczby; – tablica, w której przechowywane będą liczby,
• int pojemnosc; – maksymalna liczba elementów, możliwych do przechowywania,
• int rozmiar; – aktualna liczba przechowywanych elementów. Klasa Lista powinna mieć również następujące metody:
• konstruktor z parametrem określającym pojemność, który przydziela pamięć dla tablicy liczby oraz ustala wartości pozostałych pól klasy;
• metodę dodajElement , która przyjmuje dokładnie jeden element – liczbę całkowitą, która dodawana jest do listy; w przypadku, gdy lista jest pełna powinien zostać wyświetlony komunikat o błędzie; • metodę znajdz , której jedynym parametrem powinna być szukana liczba, natomiast wynikiem pozycja podanej liczby w liście (licząc od 0) lub -1, gdy liczby nie ma na liście; • bezparametrową metodę pisz , która wypisuje informacje o liście, w tym jej rozmiar, pojemność oraz listę przechowywanych elementów;
• metodę usunPierwszy ,która usuwa pierwsze wystąpienie podanej jako parametr liczby, jeżeli znajduje się ona na liście, tzn. jeżeli podana liczba występuje więcej niż jeden raz, to usuwane jest jedynie pierwsze jej wystąpienie;
21
• metodę usunPowtorzenia , która usuwa wszystkie powtórzenia elementów na liście, tzn. po jej wykonaniu na liście nie powinno być żadnych powtórzonych liczb;
• metodę odwroc , która odwraca kolejność elementów przechowywanych na liście;

Chciałem to zrobić samodzielnie, więc nie zdziwię się jeśli popełniłem podstawowe błędy

public class Lista {

    int[] liczby;
    int pojemność;
    int rozmiar;
    int podanaliczba;
    int szukanaliczba;
    int dodanaliczba;

    public Lista(int liczby[], int pojemność, int rozmiar) {
        this.liczby[] = liczby[];
        this.pojemność = pojemność;
        this.rozmiar = rozmiar;
    }

    public int dodajelement(int dodanaliczba) {
        for (int i = 0; i < 10; i++) {
            if (liczby[i] == 0) {
                liczby[i] = dodanaliczba;
            }
            return liczby[i];
        }

    }

    public int znajdz(int szukanaliczba) {
        boolean liczba = false;
        for (int i = 0; i < rozmiar; i++) {
            if (liczby[i] == szukanaliczba) {
                liczba = true;
                return i;

            }

        }
        if (liczba = false) {
            return -1;
        }

    }

    public String pisz() {

        return "rozmiar: " + rozmiar + "pojemność " + pojemność + "elementy: ";

    }

    public int usunpierwszy(int podanaliczba) {
        for (int i = 0; i < rozmiar; i++) {
            if (liczby[i] == podanaliczba) {
                liczby[i] = 0;
                return liczby[i];
            }

        }

    }

   public int usunpowtorzenie(){
       for (int i = 0; i < 10; i++) {
           for (int j = 0; j < 10; j++) {
               if(liczby[i]==liczby[j]){
                   liczby [i]=0;
               }
           }
       }

   } 

   public int odwroc(){
       for (int i = rozmiar; i >= 0; i++) {
           return liczby[i];
       }
   }

}

Tutaj jeszcze wkleję co powinno z tego wyjść;

Przykładowo, po wykonaniu poniższego fragmentu:
final int N = 10;
Lista l = new Lista(N);
for (int i = 0; i < N/2; ++i) {
l.dodajElement( (1 << i) ); } l.dodajElement(2);
l.dodajElement(8); l.pisz(); l.usunPierwszy(2);
l.pisz(); for (int i = 0; i < N/2; ++i) {
l.dodajElement( (1 << i) );
}
l.pisz()
; System.out.println("Po usunięciu powtórzeń:");
l.usunPowtorzenia();
l.pisz();

Na ekranie powinno zostać wyświetlone:
Lista: Pojemność: 10
Rozmiar: 7
Elementy: 1 2 4 8 16 2 8
Lista: Pojemność: 10
Rozmiar: 6
Elementy: 1 4 8 16 2 8
Nie można dodać więcej elementów, lista pełna!
Lista:
Pojemność: 10
Rozmiar: 10
Elementy: 1 4 8 16 2 8 1 2 4 8
Po usunięciu powtórzeń:
Lista:
Pojemność: 10
Rozmiar: 5
Elementy: 16 1 2 4 8

Pozostało 580 znaków

2018-12-13 14:06
2
  • int pojemność; - to pole powinno nazywać się inaczej; przyjrzyj się poleceniu.
  • public int dodajelement(int dodanaliczba) - ta metoda (oraz kilka innych) powinna się nazywać inaczej; przyjrzyj się poleceniu.
  • Przeczytaj raz jeszcze opis do metody dodajElement, zwracając szczególną uwagę na fragment o obsłudze przepełnienia.
  • for (int i = 0; i < 10; i++) { - dlatego akurat 10?
  • Nie potrzebujesz wcale zmiennej lokalnej liczba wewnątrz metody znajdz.
  • public int usunpierwszy(int podanaliczba) - gdzie w poleceniu jest napisane, że metoda usunPierwszy powinna coś zwracać? Dotyczy także usunPowtorzenie oraz odwroc.
  • Twoja metoda odwroc nie działa zgodnie z założeniami.

W skrócie: czytaj dokładnie polecenia.


edytowany 1x, ostatnio: Patryk27, 2018-12-13 14:06

Pozostało 580 znaków

2018-12-13 14:35
1

Dokładne czytanie polecenia ma przyszłość: Klasa ta ma mieć następujące pola prywatne:


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2018-12-13 14:36

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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