我正在編寫一種方法,可以返回文本文件中出現的所有行號。 例如,如果「你好」是參數,它會如果我的測試文件說搜索我的文本文件,並返回所有行號「你好」發生在返回文本文件中出現的所有行號的方法
:
Hello
my name is
is Java.
和我的參數該方法是 「我的」,它應該返回:
[2,3]
不過,我得到這個錯誤:
Exception in thread "main" java.lang.NullPointerException
at Indexer.lineNumbers(Indexer.java:41)
at Indexer.main(Indexer.java:22)
這是我的代碼:
public static String lineNumbers(String x) throws FileNotFoundException, IOException
{
LineNumberReader lineReader = new LineNumberReader(new FileReader("File.txt"));
Scanner fileScanner = new Scanner(new File("File.txt"));
String numbers = "[";
while (fileScanner.hasNextLine())
{
String line = lineReader.readLine();
if (line.contains(x))
{
int lineNumber = lineReader.getLineNumber();
String numberString = Integer.toString(lineNumber);
numbers = (numbers + "," + numberString);
}
}
return numbers + "]";
}
我在做什麼錯?
什麼行是你的代碼#41行?無論您在該行中訪問的對象是否爲空。它可能是'如果(line.contains(x))'?也許'線路'在某些時候是空的。 – 2015-04-05 05:31:22
另外,在你的例子中,我認爲你的意思是「是」,而不是「我的」:) – 2015-04-05 05:31:48
因爲'LineNumberReader'和'Scanner'是分開的對象。 'fileScanner.hasNextLine()'總是爲真 - 當你從'lineReader'中讀取時它不會變爲false。但'readLine()'一旦'lineReader'到達流的末尾就返回null。 – 2015-04-05 05:33:13