Zanim to przeczytasz, problem jest prosty do rozwiązania zapewne, jakaś totalna głupota(nie algorytmiczna ale ze specyfikacji javy), więc nie bój się czytać tego tekstu. Pomóż proszę:)
Witam! Mam dużo małych problemów z duuuuuużym programem, generalnie to moment przełomowy.
Bardzo proszę o pomoc, muszę posunąć się jakoś do przodu.
Mam enumka:
public enum Niebezpieczeństwa {
przepascie,
ekspozycja,
stromizny,
niedzwiedzie
}
Oraz pewną wyszukiwarkę, która wysupłuje z pliku tekstowego dane do konstruktora ścieżki łączącej dwa punkty, problem polega na tym że dostaję błąd:
Exception in thread "main" java.lang.NullPointerException
at Ścieżka.<init>(Ścieżka.java:31)
at Wyszukiwarka.Formater2(Wyszukiwarka.java:258)
at Wyszukiwarka.wczytaj(Wyszukiwarka.java:47)
at Wyszukiwarka.main(Wyszukiwarka.java:272)
Kondracka Przelecz;Giewont;650;30';170;2;niebieski;ekspozycja, stromizny;lancuchy
to jest linijka na wejście ekspozycja i stromizny to niebezpieczństwa. Wyszukiwarka przekazuje je do konstruktora śćieżki jako ArrayList<String>, natomiast ścieżka ma atrybut ArrayList<Niebezpieczeństwo>.
Ażeby to pprzyporządkować używam:
Enum.valueOf(Niebezpieczeństwa.class, niebezpieczeństwa.get(i))
Polecenie działało, dopóki nie zacząłem używać ArrayList<Niebezpieczeństwo>(założyłem że może być tylko jedno niebezpieczeńswo więc miałem tylko jedno w klasie, ale jak widzimy naraz występuje ekspozycja i stromizny)
Tutaj kod klasy ścieżka:
UWAGA(MYŚLĘ ŻE W TYM LEŻY PROBLEM): n które wkładamy do ArrayList gdy wypisuję = ekspozycja-więc nie jest puste, natomiast nie moge go dodać do listy bo wyskakuje ten błąd. Nie umiem używać EnumMap, a termin mnie goni, proszę baardzo o pomoc! Możliwośc dodania instancji enuma do ArrayList rozwiązałaby sprawę, w ogóle nie rozumiem, dlaczego operacja zwraca wyjątek..
import java.sql.Time;
import java.util.ArrayList;
import java.util.EnumMap;
public class Ścieżka {
String początek;
String koniec;
int odległość;
Time czas; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int przewyższenie;
int poziomtrudności;
String kolor;
TU Niebezpieczeństwa n;
I TU ArrayList<Niebezpieczeństwa> niebezpieczeństwa;
ArrayList<Zabezpieczenia> zabezpieczenia;
Ścieżka(String początek, String koniec, int odległość, String
czas, int przewyższenie, int poziomtrudności, String kolor, ArrayList<String>
niebezpieczeństwa, ArrayList<String> zabezpieczenia){
this.początek = początek;
this.koniec = koniec;
this.odległość = odległość;
this.czas = UstawCzas(czas);
this.przewyższenie = przewyższenie;
this.poziomtrudności = poziomtrudności;
this.kolor = kolor;
ODTĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄD
<b>for(int i = 0; i < niebezpieczeństwa.size()-1; i++){ //PAMIĘTAJ ZABRAĆ JEDYNKĘ
System.out.println(niebezpieczeństwa+" "+i);
if(!niebezpieczeństwa.get(i).equals("")){
n = Enum.valueOf(Niebezpieczeństwa.class, niebezpieczeństwa.get(i));
System.out.println(n);
this.niebezpieczeństwa.add(n);}
}</b>/* for(int i = 0 ; i < zabezpieczenia.size(); i++){
if(!zabezpieczenia.get(i).equals("") && zabezpieczenia.get(i).length()!=1 ){
this.zabezpieczenia.add(Enum.valueOf(Zabezpieczenia.class, zabezpieczenia.get(i)));}
} */
DOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOTĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄĄD
// Enum.valueOf(Zabezpieczenia.class, zabezpieczenia);
}
public static Time UstawCzas(String czas){
Time d = new Time(1,2,3);
return d;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
Dla wyjaśnienia, pozostałe składowe ścieżki oprócz nieszczęsnych enumów, zostały już wysupłane, wstawione.