java—写入文件会导致nullpointerexception

gupuwyp2  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(292)

这个问题在这里已经有答案了

什么是nullpointerexception,如何修复它(12个答案)
5年前关门了。
我正在编写一个代码,将一个整数数组写入一个文件。但是,它一直给我一个nullpointerexception。我认为这是两种方法中的一种,我知道它在某个地方,但我看不出来。这是密码。

public static void WriteToFile (int[] n)throws IOException{
    try{
        BufferedWriter bw=new BufferedWriter(new FileWriter("C:\\sortfile2.txt"));
        for(int i=0;i<=25;i++){
            bw.write(sortArray(n)+" ");
        }
        bw.flush();
        bw.close();
    }
    catch(IOException e){
        System.out.println("Could not write to file");
    }
}

这是第一个可以定位错误的方法。第二个是:

public static int sortArray(int[] a){
    int sort=0;
    for(int i=0;i<a.length;i++){
        int max=IndexOfMaxInRange(a,i,a.length-1);
        sort=SwapElement(a,max,max++);
        a[i]=sort;
    }
    return sort;
}

哪里 IndexOfMaxInRange 是一个查找数组中最高整数的方法,其中 SwapElement 是一个实现 IndexOfMaxInRange ,并交换数组中最大的数,而交换最小的数。

dojqjjoe

dojqjjoe1#

试试这个代码,并根据你的编辑(这对我很有用)。。。

public static void write (String filename, int[]x) throws IOException{
      BufferedWriter outputWriter = null;
      outputWriter = new BufferedWriter(new FileWriter(filename));
      for (int i = 0; i < x.length; i++) {
        // Maybe:
        outputWriter.write(x[i]+"");
        // Or:
        outputWriter.write(Integer.toString(x[i]);
        outputWriter.newLine();
      }
      outputWriter.flush();  
      outputWriter.close();  
    }
vsmadaxz

vsmadaxz2#

您的自定义排序不起作用,将导致此问题。特别地

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

手段 i 成为数组的最后一个元素
所以

int max=IndexOfMaxInRange(a,i,a.length-1);
    sort=SwapElement(a,max,max++);

关于max有一些相当令人担忧的索引边界问题,而max++似乎毫无意义。
不用分类就可以找到你的问题。

相关问题