Итак, вот моя программа, которая работает нормально:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Locale;
public class ScanSum {
public static void main(String[] args) throws IOException {
Scanner s = null;
double sum = 0;
try {
s = new Scanner(new BufferedReader(new FileReader("D:/java-projects/HelloWorld/bin/usnumbers.txt")));
s.useLocale(Locale.US);
while (s.hasNext()) {
if (s.hasNextDouble()) {
sum += s.nextDouble();
} else {
s.next();
}
}
} finally {
s.close();
}
System.out.println(sum);
}
}
Как вы можете видеть, я использую абсолютный путь к файлу, который я читаю:
s = new Scanner(new BufferedReader(new FileReader("D:/java-projects/HelloWorld/bin/usnumbers.txt")));
Проблема возникает, когда я пытаюсь использовать относительный путь:
s = new Scanner(new BufferedReader(new FileReader("usnumbers.txt")));
Я получаю сообщение об ошибке:
Exception in thread "main" java.lang.NullPointerException
at ScanSum.main(ScanSum.java:24)
Файл usnumbers.txt находится в том же каталоге, что и файл ScanSum.class:
D:/java-projects/HelloWorld/bin/ScanSum.class
D:/java-projects/HelloWorld/bin/usnumbers.txt
Как я могу это решить?