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