Mam program który korzysta z obiektów wierzchołka. Jedno z jego pól to public Wierzcholek WierzcholekPoprzedni, jest ono typu obiektu który tworzę.
W trakcie wykonania uzyskuję błąd w lini tworzenia zmiennej która jest typu obiektu Wierzcholek.
Komunikat błędu to : Listening on 48594
User program running
Not able to submit breakpoint FieldBreakpoint najkrotszedrogi.Wierzcholek.WierzcholekKolejny, reason: Field 'WierzcholekKolejny' does not exist in class najkrotszedrogi.Wierzcholek.
Thread main stopped at NajkrotszeDrogi.java:54.
Jak poprawić ten błąd ?
Kod projektu utworzony w Netbeans kod jest na etapie testowania, może logika nie działać.
package najkrotszedrogi;
public class NajkrotszeDrogi {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Wierzcholek WierzcholekNr0 = new Wierzcholek("Pierwszy");
Wierzcholek WierzcholekNr1 = new Wierzcholek("Drugi");
Wierzcholek WierzcholekNr2 = new Wierzcholek("Trzeci");
Wierzcholek WierzcholekNr3 = new Wierzcholek("Czwarty");
Wierzcholek WierzcholekNr4 = new Wierzcholek("Piąty");
WierzcholekNr0.WierzcholkiOdleglosc = new WierzolekOdleglosc[]{new WierzolekOdleglosc(WierzcholekNr1, 4),
new WierzolekOdleglosc(WierzcholekNr2, 3),
new WierzolekOdleglosc(WierzcholekNr3, 8),
new WierzolekOdleglosc(WierzcholekNr4, 10)
};
WierzcholekNr1.WierzcholkiOdleglosc = new WierzolekOdleglosc[]{new WierzolekOdleglosc(WierzcholekNr0, 4),
new WierzolekOdleglosc(WierzcholekNr2, 1),
new WierzolekOdleglosc(WierzcholekNr3, 2),
new WierzolekOdleglosc(WierzcholekNr4, 6)};
WierzcholekNr2.WierzcholkiOdleglosc = new WierzolekOdleglosc[]{new WierzolekOdleglosc(WierzcholekNr0, 3),
new WierzolekOdleglosc(WierzcholekNr1, 1),
new WierzolekOdleglosc(WierzcholekNr3, 2),
new WierzolekOdleglosc(WierzcholekNr4, 3)};
WierzcholekNr3.WierzcholkiOdleglosc = new WierzolekOdleglosc[]{new WierzolekOdleglosc(WierzcholekNr0, 8),
new WierzolekOdleglosc(WierzcholekNr1, 2),
new WierzolekOdleglosc(WierzcholekNr2, 2),
new WierzolekOdleglosc(WierzcholekNr4, 1)};
/*WierzcholekNr4.WierzcholkiOdleglosc = new WierzolekOdleglosc[]{ new WierzolekOdleglosc(WierzcholekNr0, 10),
new WierzolekOdleglosc(WierzcholekNr1, 6),
new WierzolekOdleglosc(WierzcholekNr2, 3),
new WierzolekOdleglosc(WierzcholekNr3, 1) }; */
Wierzcholek[] Wierzcholki = {WierzcholekNr0, WierzcholekNr1, WierzcholekNr2, WierzcholekNr3, WierzcholekNr4};
PoliczNajbizszeDrogi policz = new PoliczNajbizszeDrogi(Wierzcholki);
}
package najkrotszedrogi;
class WierzolekOdleglosc {
public Wierzcholek WierzcholekKolejny;
public Integer Odleglosc = 0;
public WierzolekOdleglosc(Wierzcholek WierzcholekKolejny, Integer Odleglosc) {
this.WierzcholekKolejny = WierzcholekKolejny;
this.Odleglosc = Odleglosc;
}
}
class Wierzcholek {
public String NazaWierzcholka;
public Wierzcholek WierzcholekPoprzedni = null;
public Integer MinimalnaOdleglosc = 0;
public WierzolekOdleglosc[] WierzcholkiOdleglosc;
public Boolean UzytyJakoGlowny;
public Wierzcholek(String mNazaWierzcholka) {
NazaWierzcholka = mNazaWierzcholka;
}
}
public class PoliczNajbizszeDrogi {
public PoliczNajbizszeDrogi(Wierzcholek[] TablicaWierzcholkow) {
Wierzcholek ZacznijOdWierzcholka = TablicaWierzcholkow[0];
while (ZacznijOdWierzcholka != null) {
ZacznijOdWierzcholka = UstalOdleglosciDoSasiadow(ZacznijOdWierzcholka, TablicaWierzcholkow);
}
}
private Boolean CzyUzytoWszystkie(Wierzcholek[] TablicaWierzcholkow) {
return false;
}
private Wierzcholek UstalOdleglosciDoSasiadow(Wierzcholek WierzcholekGlowny, Wierzcholek[] TablicaWierzcholkow) {
WierzcholekGlowny.UzytyJakoGlowny = true;
Integer NajmniejszaOdlegloscDoSasiada = Integer.MAX_VALUE;
Wierzcholek NajblizszyWierzcholek = null;
Integer MaksymalnaWartoscOdleglosci = Integer.MAX_VALUE;
for (int i = 0; i < WierzcholekGlowny.WierzcholkiOdleglosc.length; i++) {
if (NajmniejszaOdlegloscDoSasiada > WierzcholekGlowny.WierzcholkiOdleglosc[i].Odleglosc) {
NajmniejszaOdlegloscDoSasiada = WierzcholekGlowny.WierzcholkiOdleglosc[i].Odleglosc;
NajblizszyWierzcholek = WierzcholekGlowny.WierzcholkiOdleglosc[i].WierzcholekKolejny;
}
if (WierzcholekGlowny.WierzcholkiOdleglosc[i].WierzcholekKolejny.MinimalnaOdleglosc > WierzcholekGlowny.MinimalnaOdleglosc + WierzcholekGlowny.WierzcholkiOdleglosc[i].Odleglosc) {
WierzcholekGlowny.WierzcholkiOdleglosc[i].WierzcholekKolejny.MinimalnaOdleglosc = WierzcholekGlowny.MinimalnaOdleglosc + WierzcholekGlowny.WierzcholkiOdleglosc[i].Odleglosc;
WierzcholekGlowny.WierzcholkiOdleglosc[i].WierzcholekKolejny.WierzcholekPoprzedni = WierzcholekGlowny;
}
}
if (NajmniejszaOdlegloscDoSasiada < MaksymalnaWartoscOdleglosci && NajblizszyWierzcholek != null) {
return NajblizszyWierzcholek;
} else {
return UstalKolejnyWierzcholek(TablicaWierzcholkow);
}
}
private Wierzcholek UstalKolejnyWierzcholek(Wierzcholek[] TablicaWierzcholkow) {
Integer MinimalnaDrogaOdPierwszego = -1;
Wierzcholek KolejnyWierzcholek = null;
for (int i = 0; i < TablicaWierzcholkow.length; i++) {
if (MinimalnaDrogaOdPierwszego > TablicaWierzcholkow[i].MinimalnaOdleglosc && !TablicaWierzcholkow[i].UzytyJakoGlowny) {
MinimalnaDrogaOdPierwszego = TablicaWierzcholkow[i].MinimalnaOdleglosc;
KolejnyWierzcholek = TablicaWierzcholkow[i];
}
}
return KolejnyWierzcholek;
}
}
}