Permalänk

Java-Dilemma

Hej jag sitter och programmerar en liten app i Java i utbildningssyfte. Uppgiften går ut på att man ska spara platser på en karta och sedan koppla ihop dessa för att räkna ut färdvägar och färdmedel osv. Nåväl, allt har fungerat ganska bra tills det är dags för mig att koppla ihop städerna, det ska göras med denna kod och här någonstans är det något fel, som jag inte hittar med mitt mediokra kunnande.

I main metoden

class newPath implements ActionListener { public void actionPerformed(ActionEvent ave){ String frstad = JOptionPane.showInputDialog(null, "Från Stad"); String tillstad = JOptionPane.showInputDialog(null, "Till Stad"); String fdmedel = JOptionPane.showInputDialog(null, "Färdmedel?"); int dist = Integer.parseInt(JOptionPane.showInputDialog(null, "Färdsträcka")); Stad s1 = new Stad(frstad); Stad s2 = new Stad(tillstad); grafen.connn(s1, s2, fdmedel, dist); } }

som samspelar med denna i en annan klass.

public void connn(N from, N to, String n, int v){ List<ListEdge<N>> fromList = nodes.get(from); List<ListEdge<N>> toList = nodes.get(to); ListEdge<N> e1 = new ListEdge<N>(to, n, v); fromList.add(e1); ListEdge<N> e2 = new ListEdge<N>(from, n, v); toList.add(e2); }

Ser ni något som jag inte ser?

Felet jag får pekar på --> grafen.connn(s1, s2, fdmedel, dist); samt --> fromList.add(e1);
och är en NullPointerException

Koden går att kompilera utan problem, felet kommer när jag försöker använda metoden i mitt program!

Permalänk
Medlem

Felet kan inte gärna peka på två ställen samtidigt. Vilken rad är den översta i stacktracen?

Det finns egentligen bara en orsak till oväntade NullPointerExceptions, och det är att du behandlar en null-referens som ett objekt (undantag finns, men detta är klart vanligast). Så antingen är "grafen" null på den ena raden, och/eller så är "fromList" null på den andra raden. Det är inte svårare än så. Kolla om "grafen" tilldelas ett värde före den problematiska raden körs, och att nodes.get(from) inte returnerar null.

Permalänk
Medlem

Vad är nodes för nått, hur ser den ut, kan ju vara där felet är?

edit, för sen igen :S

Permalänk

Grafen får ett värde, den sparar Allt det vi matar in, men det är kopplingen som inte fungerar.. dvs grafen.connn(s1, s2, fdmedel, dist); samt --> fromList.add(e1);
Det läggs inte in nån listedge :/

Nodes är sparade platser

Permalänk
Medlem

I ett sådant här fall är det väl enklast att antingen köra igång en debugger eller skriva null tester.

if variable == null print variable is null

Sedan arbeta sig bakåt från den information du får ut av detta.