java - 为什么数组出现空指针异常?

标签 java nullpointerexception

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
private static ArrayList<Countries> arr =null;
static String country;
static String capital;
static String cities;
static String answer;

public static void main(String args[]) throws IOException{
    Scanner keybord = new Scanner(System.in);
    ArrayList<Countries> d = read("data.txt");
    String res = "";
    for(int i = 0; i < d.size(); i++){
             res += d.get(i).toString();
        answer = keybord.nextLine();
        if(answer.equalsIgnoreCase(d.get(i).getCapital()))
            res+= "The answer is true!";
        else
            res += "The answer is not true" + "The answer is " + d.get(i).getCapital();
        System.out.println(res);
    }
}

public static ArrayList<Countries> read(String filename) throws IOException{
    Scanner scan = new Scanner(new File(filename));
    while(scan.hasNext()){
        country = scan.nextLine(); //System.out.println(country);
        String cities1 = scan.nextLine(); //System.out.println(cities1);
        String cities2 = scan.nextLine(); //System.out.println(cities2);
        String cities3 = scan.nextLine(); //System.out.println(cities3);
        String cities4 = scan.nextLine(); //System.out.println(cities4);
        String capital = scan.nextLine(); //System.out.println(capital);
        Countries c = new Countries(cities1, cities2, cities3, cities4, capital); 
        arr.add(c); // where i get the exception
        scan.nextLine();
    }
    return arr;

}

我无法理解为什么在尝试将国家/地区添加到数组列表时会出现空指针异常?我不应该在创建它之前将其实例化为 null 吗?

最佳答案

您尚未初始化arr,因此默认情况下它是null

初始化

private static ArrayList<Countries> arr = new ArrayList<Countries>();

还有

检查下一个元素是否存在

 while(scan.hasNext()){

然后你正在阅读接下来的 7 行

country = scan.nextLine(); //System.out.println(country);
String cities1 = scan.nextLine(); //System.out.println(cities1);
String cities2 = scan.nextLine(); //System.out.println(cities2);
String cities3 = scan.nextLine(); //System.out.println(cities3);
String cities4 = scan.nextLine(); //System.out.println(cities4);
String capital = scan.nextLine(); //System.out.println(capital);

scan.nextLine();

可能会失败

关于java - 为什么数组出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378191/

相关文章:

java - Java 数组上线程 "main"java.lang.NullPointerException 中的异常

java - 在 Spring MVC Web 应用程序中提交表单时出现错误 404

android - 发送短信,NullPointerException

java - web.xml中如何通过URL传递参数?

java - 子类化并覆盖 onTouchEvent

java - 在 Mockito 中获取 NullpointerException

java - 抽屉导航标题 textview nullpointerexception

java - 这段代码有什么问题?

java - Libgdx-在表行中定位参与者

Java 线程在 Ubuntu/Jetty 上滞后/长时间 hibernate