有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用字符串数组和打印文件输出获取NullPointerException?

因此,我正在编写一个程序,其中需要有一个循环,“读取并将数组中每个元素中存储的字符串的第一个字符写入输出文件”

我一直在得到一个空点异常:a=行星[I]。查拉特(0)

 String[] planets = new String[8];
    char a = 'a';

    String pl = "planets.txt";
    File file = new File(pl);
    Scanner inputFile = new Scanner(file);

    for(int i = 0; i < planets.length; i++){
        while(inputFile.hasNext()){
            planets[i] = inputFile.nextLine();
        }
    }
    inputFile.close();

    System.out.println("closed.");

    String b = "planetfirst.txt";
    PrintWriter outputFile = new PrintWriter(b);

    for (int i = 0; i< planets.length; i++){

        a = planets[i].charAt(0);

        outputFile.println(a);
    }


    outputFile.close();
    System.out.println("Data written to the file.");

提前谢谢

编辑: 我将程序的其余部分添加到了一些上下文中:)


共 (1) 个答案

  1. # 1 楼答案

    while循环位于for循环内,因此所有文本都将位于planets[0]内,其余索引将为空(即null)。当您稍后使用

    for(int i = 0; i < planets.length; i++) {
        a = planets[i].charAt(0);
    }
    

    i大于0时,您将得到一个NullPointerException

    如果您的文本文件有8行,那么就不需要while循环,因为您有一个迭代8次的for循环和一个长度为8的数组

    但是,如果文本文件中的行数不同,则不应使用数组,而应使用arraylist,并且只使用while循环,而不是for循环

    差不多

    List<String> planets = new ArrayList<String>();
    while(inputFile.hasNext()){
        planets.add(inputFile.nextLine());
    }