Java-проект, обработка ошибок и обновлениеJAVA

Программисты JAVA общаются здесь
Anonymous
Java-проект, обработка ошибок и обновление

Сообщение Anonymous »

У меня есть следующий вывод для CLI int, который называется userTrain, я получаю правильные данные, но когда мне нужно обновить мой фактический графический интерфейс/панель, этого не происходит. Я знаю, что ошибка связана с нулевым указателем, который ссылается на 8-й столбец в CSV-файле, который является общими станциями, но не все станции имеют общую станцию.
Это поезд пользователя

Код: Выделить всё

User's Train details:
Train number: 10
Station code: G13
Direction: forward
Current Station:  North Hills Station

Код: Выделить всё

Exception in thread "Thread-3" java.lang.NullPointerException: Cannot invoke --------------------
"java.lang.CharSequence.toString()" because "s" is null
at java.base/java.lang.String.contains(String.java:2977)
at ca.ucalgary.edu.ensf380.TrainTracker.getStationsForLine(TrainTracker.java:88)
at ca.ucalgary.edu.ensf380.TrainTracker.getPreviousStation(TrainTracker.java:100)
at ca.ucalgary.edu.ensf380.AdvertisementDisplay.processTrainData(AdvertisementDisplay.java:434)
at ca.ucalgary.edu.ensf380.AdvertisementDisplay.lambda$startSubwaySimulator$3(AdvertisementDisplay.java:368)
at java.base/java.lang.Thread.run(Thread.java:1583)`
Вот соответствующий код:

Код: Выделить всё

public List getStationsForLine(String line) {
List lineStations = new ArrayList();
for (Station station : stations.values()) {
String commonStations = station.getCommonStations();
if (commonStations == null) {
commonStations = ""; // Ensure commonStations is not null
}
if (commonStations.contains(line) || line.equals(station.getLineCode())) {
lineStations.add(station);
}
}
return lineStations;
}

private void updateNextTrainPanel(Station currentStation) {
if (currentStation == null) {
System.out.println("updateNextTrainPanel: currentStation is null");
previousStationLabel.setText("Previous Station: N/A");
currentStationLabel.setText("Current Station: N/A");
nextStationsLabel.setText("Next Stations:
N/A");
return;
}

System.out.println("updateNextTrainPanel: Current Station: " + currentStation.getName());

Station previousStation = trainTracker.getPreviousStation(currentStation);
Station nextStation = trainTracker.getNextStation(currentStation);

System.out.println("updateNextTrainPanel: Previous Station: "
+ (previousStation != null ? previousStation.getName() : "N/A"));
System.out.println(
"updateNextTrainPanel: Next Station: " + (nextStation != null ? nextStation.getName() : "N/A"));

List nextStations = new ArrayList();
Station tempNextStation = nextStation;
for (int i = 0; i < 3 && tempNextStation != null; i++) {
nextStations.add(tempNextStation);
tempNextStation = trainTracker.getNextStation(tempNextStation);
}

previousStationLabel
.setText("Previous Station: " + (previousStation != null ? previousStation.getName() : "N/A"));
currentStationLabel.setText("Current Station: " + currentStation.getName());
nextStationsLabel.setText("Next Stations:
" + nextStations.stream()
.map(Station::getName)
.reduce((s1, s2) -> s1 + "
" + s2)
.orElse("N/A") + "");

System.out.println("updateNextTrainPanel: Panel updated");
}

public Station getPreviousStation(Station currentStation) {
List lineStations = getStationsForLine(currentStation.getLineCode());
System.out.println("Line stations: " + lineStations);
int currentIndex = lineStations.indexOf(currentStation);
System.out.println("Current index: " + currentIndex);
if (currentIndex > 0) {
return lineStations.get(currentIndex - 1);
}
return null;
}

public Station getNextStation(Station currentStation) {
List lineStations = getStationsForLine(currentStation.getLineCode());
System.out.println("Line stations: " + lineStations);
int currentIndex = lineStations.indexOf(currentStation);
System.out.println("Current index: " + currentIndex);
if (currentIndex <  lineStations.size() - 1) {
return lineStations.get(currentIndex + 1);
}
return null;
}
мы получаем текущую станцию, но даже она не обновляется на панели.

Подробнее здесь: https://stackoverflow.com/questions/788 ... d-updating

Вернуться в «JAVA»