Skocz do zawartości

[java] - Problem z hashset


pamparampa

Rekomendowane odpowiedzi

Witam. Mam następujący problem: Mam program, w którym można zarządzać firmą, np. dodawać pracowników, liczyć ich wypłatę itd. Wszyscy pracownicy są zapisaniu w kolekcji hashset. Przedstawiam początek głównej klasy i dwie metody:

import java.util.*;

public class Test
{
   public Set set = new HashSet();
   public Urzednik urzednik;
   public Robotnik robotnik;
   private int r;
   private int i;
   public <Pracownik>Iterator it = set.iterator();

   public Pracownik znajdz(String nazwisko)
   {
       Pracownik p = null;
       while(it.hasNext() && !it.next().nazw.equals(nazwisko) )
       {   
       }
       if(it.hasNext())
       {
           p=it.next();
       }
       return p;
   }     
public boolean przyjmijRobotnika(String nazwisko,double etat,int godzin)
   {
       robotnik = new Robotnik(nazwisko,etat,godzin);
       if(znajdz(nazwisko)==null)
       {
           set.add(robotnik);
           return true;
       }
       else
       {
           return false;
       }
   }
}

I próbuję dodać nowego pracownika, zwraca mi true, a potem korzystam z metody 'znajdź' i okazuje się, że zwraca mi null, czyli tak jakby tego pracownika nie było. Dodam jeszcze, że przy kompilowaniu wyskakuje mi takie okienko :"<ścieżka do klasy Test> uses unchecked or unsafe operations. Recompile with -Xlint:unchecked for details". Nie wiem czy to ma jakikolwiek związek z problemem.

Odnośnik do komentarza
Udostępnij na innych stronach

Znajome klasy, czyżby PWr?

A błąd masz w wyszukiwaniu, bo w pętli while it.nextem pobierasz pracownika do jej warunku i gdy trafi na dobrego to przerywa pętle, a w ifie pobierasz już następnego pracownika, zamiast tego prawidłowego. Musisz po prostu w warunku pętli dać samo hasNext, a w niej dopiero dać ifa sprawdzającego nazwisko (przy czym pobierz pracownika do jakiejś zmiennej pomocniczej, a dopiero potem sprawdzaj ifem, czy to jest ten prawdiłowy).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...