Cześć wszystkim. Piszę program obliczający odległość między punktami i nie wychodzi mi tworzenie obiektów z dynamicznie przydzielaną nazwą. ( o ile w ogóle takie podejście ma sens- jeśli nie to proszę o naprostowanie mojego toku myślenia). Otóż nazwa nadawana jest przez hashmape (znalazłem takie rozwiązanie w sieci) i kombinuję dalej. Wywala błąd w 47 linii, java.lang.NullPointerException. Domyślam się że chodzi o pustą komórkę w liście natomiast nie potrafię znaleźć rozwiązania takiego aby nie wywaliło błędu gdzie indziej. Stąd moja prośba o obejrzenie kodu i nakierowanie na ewentualny błąd w kodzie. Oto kod:
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
public class kdim {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String data = br.readLine();
int howdims, howtest, sumlist = 0;
Scanner skaner = new Scanner(data);
howdims = skaner.nextInt();
howtest = skaner.nextInt();
skaner.close();
point obiekt = null;
point obiekt2 = null;
HashMap<String, point> hashmapa = new HashMap<String, point>();
List<Integer> wyniki = new ArrayList<Integer>();
if (howdims <= 1000 & howtest <= 100) { // sprawdza ilosc wymiarów i
// testów
for (int i = 0; i < howtest; i++) {
String lineofcord = br.readLine();
String coords[] = new String[howtest]; // tworzy tablice do
// kordów o rozmiarze
// iletestów
Scanner scancords = new Scanner(lineofcord); // tworzy skaner
// lini z
// kordami
coords[i] = scancords.nextLine(); // przekazuje stringi lini do
// tablicy
scancords.close(); // zamyka skaner
point temp = new point(coords[i]);
hashmapa.put("point_" + i, temp);
}
for (int k = 0; k < howdims; k++) {
for (int j = 0; j < howtest; j++) {
obiekt = hashmapa.get("point_" + j);
obiekt2 = hashmapa.get("point_" + j + 1);
int x = obiekt.coord.get(k);
int y = obiekt2.coord.get(k); // tutaj wywala błąd
double wynik = Math.pow(x - y, 2);
wyniki.add((int) wynik);
}
for (int x = 0; x < wyniki.size(); x++) {
sumlist = +wyniki.get(x);
}
int pierw = (int) Math.sqrt(sumlist);
System.out.println(pierw);
}
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class point {
public List<Integer> coord = new ArrayList<Integer>(); // tworzy liste do
// kordów
String coords;
point(String x) {
coords = x; // string przekazany jest do skanera, dzielony i parsowano
// do typu int
Scanner skaner = new Scanner(coords);
// while (skaner.hasNextInt()) {
coord.add(skaner.nextInt());
skaner.close();
// }
}
}
Pozdrawiam i liczę na wskazówki