przypisanie zwracanej przez funkcje wartości do zmiennej w innej klasie

0

Hej.
posiadam funkcje w klasie Magazyn o nazwie zwrocIndeks()
ID to pole obiektu typu Towar znajdującego się w tablicy

public int zwrocIndeks(String a)
   
        for (int i = 0; i < 10; i++)
 
         if(tab[i].ID.equals(a))
         {
       ind=i;
         }
     return ind;
        
    }

Wywołanie tej funkcji w innej klasie:

int indeks=magKlient.zwrocIndeks(idPedytuj);

Zwracana błąd:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Nie bardzo wiem, czy odwołuję się źle czy do złego obiektu.
Jak inaczej mogę wywołać funkcję zwrocIndeks() która będzie sprawdzała pola ID każdego obiektu a następnie wynik (indeks) zapisze w zmiennej innej klasy?
pole ID jest publiczne o ile to ma znaczenie.

0

Zasadniczo błedu nie widzę.
Jeśli nie podasz więcej kodu to trudno będzie zgadnąć co jest nullem.
Może magKlient, a może jakiś tab[i].ID.

0

Mam nadzieje że jak wkleje całość to nie będzie tego za dużo:
klasa Towar

public class Towar implements Serializable
{
    public String ID;
    private String nazwa;
    private float cena;
    private String producent;
                public Towar(String ID, String nazwa, float cena, String producent)
                {
                    this.ID=ID;
                    this.nazwa=nazwa;
                    this.cena=cena;
                    this.producent=producent;
                }
            public Towar()
            {
                ID="brak";
                nazwa="brak";
                cena=0;
                producent="brak";
            }
---------
public String zwrocID(){return ID;}; //myslalem o tej funkcji ale chyba tamta bedzie lepsza

Klasa magazyn

public class Magazyn implements Serializable
{//Scanner in = new Scanner(System.in);
  //public static int indeks;
    int ind;
    private static int liczbaTowarow;
    public Towar tab[];
    public String nazwaPliku="J:\\Pliczek.txt";
    public Magazyn()
         
    {
        tab = new Towar[10];
        liczbaTowarow=0;
    }
    ///////////////////////////////////////////////////////////////////////////
    public void dodaj(Towar t)
    {for (int i = 0; i < 10; i++) {
            
        
        if(tab[i]==null)
        {
        tab[liczbaTowarow]=t;
        liczbaTowarow++;
        break;
        }
    }
-------
public int zwrocIndeks(String a)
    {System.out.println("funkcja zwrocIndeks()");
        for (int i = 0; i < 10; i++)
 
         if(tab[i].ID.equals(a))
         {
       ind=i;
         }
     return ind;
}

Klasa w ktorej wywoluje funkcje zawiera kilka elementow m.in:

  Magazyn magKlient  = new Magazyn();
-----
IDedytuj = new JTextField();
    p4.add(IDedytuj); 
-------
//tutaj wywolanie funkcji ktora ma odbierac wartosc zwracana


String idPedytuj=IDedytuj.getText();
         
         System.out.println("edytujemy obiekt o ID "+idPedytuj);
          int indeks=magKlient.zwrocIndeks(idPedytuj);
               System.out.println("indeks ktorego szukales to "+indeks);


Problem jest w tym, ze funkcja zwraca błąd gdy tablica ma nulle czyli nie jest całkowicie pełna. poza tym dziala idealnie. Pytanie czy da sie jakoś "ignorowac" nulle?

1

tak
if(tab[i]!=null && tab[i].ID.equals(a)))

(będzie działać - choć to kod dramat)

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