[英]Receiving a null pointer exception
我從我編寫的某些代碼中收到了空指針異常,我看不到異常的原因。 這是我的代碼:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
public class SearchingFilesMain {
public static void main(String[] arg) {
int checker4 = 0;
String checker3 = "";
String checker2 = "";
String checker1 = "";
String checker = "";
try {
Scanner scan = new Scanner(new BufferedReader(new FileReader(
"C:\\Users\\User\\Desktop\\asciiTracks.txt")));
while (checker != null) {
String pattern = "Array Start";
checker = scan.findWithinHorizon(pattern, 0);
if(checker.equals("Array Start")){
String pattern2 = "Array Size";
checker3 = scan.findWithinHorizon(pattern2, 300);
System.out.println(checker3);
if(checker3.equals("Array Size")){
checker4 = Integer.parseInt(scan.findInLine("(10000|\\d{1,4})"));
System.out.println(checker4);
}else{System.out.println("no array size");}
System.out.println(checker4);
}else{System.out.println("no array size");}}}catch (FileNotFoundException e) {}}}
這是我在控制台上得到的錯誤:
Exception in thread "main" java.lang.NullPointerException
at SearchingFilesMain.main(SearchingFilesMain.java:31)
代碼的這一行會發生此錯誤:
if(checker3.equals("Array Size")){
這對我來說毫無意義,因為如果checker3不等於文本,它肯定會簡單地移到else語句並從那里去,而不是僅僅拋出null指針異常並停止程序? 我在想這個嗎?
任何人都知道為什么會這樣嗎?
盡管您已經用空字符串初始化了checker3
,但是它被checker = scan.findWithinHorizon(pattern, 0);
這似乎返回null
。
為了避免NullPointerException
您應該在if
語句中添加null
檢查-
if(checker!=null && checker.equals("Array Start")){
...
}else{
...
}
scan.findWithinHorizon(pattern, 0)
可能將null
返回到checker3
並且
在其上調用equals()
會給您NullPointerException
。
如果要忽略此異常,請將條件更改為
if("Array Size".equals(checker3)){
}
當checker3
不等於"Array Size"
並且checker3
為null
,這里的條件為false
,否則為true
在您的情況下, checker3 = scan.findWithinHorizon(pattern2, 300);
使它為null
如果checker3
未checker3
則為null
,並且對引用null
引用變量調用方法將導致NullPointerException
。
checker3 = scan.findWithinHorizon(pattern2, 300);
我只能假設上面的代碼checker3
null
值分配給checker3
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.