运行Java程序时出现NullPointerException错误

运行Java程序时出现NullPointerException错误,java,arrays,Java,Arrays,运行程序时出现NullPointerException错误,我想不出原因。确切的错误是线程“main”java.lang.NullPointerException中的异常 在EditDistance.EditDistance(EditDistance.java:32) 在EditDistance.main(EditDistance.java:19) import java.util.ArrayList; 公共类编辑距离 { 公共静态void main(字符串[]args) { ArrayList

运行程序时出现NullPointerException错误,我想不出原因。确切的错误是线程“main”java.lang.NullPointerException中的异常 在EditDistance.EditDistance(EditDistance.java:32) 在EditDistance.main(EditDistance.java:19)

import java.util.ArrayList;
公共类编辑距离
{
公共静态void main(字符串[]args)
{
ArrayList a=新的ArrayList();
char[]xArray=null;
char[]yArray=null;
char[]finalY=null;
字符串x=“aacagtacc”;
字符串y=“TAAGGTCA--”;
xArray=x.toCharArray();
yArray=y.toCharArray();
a=toArrayList(a,yArray);
System.out.println(编辑距离(a,xArray,finalY,y));
}
公共静态int editDistance(ArrayList a,char[]xArray,char[]finally,字符串y)
{
内部温度;

对于(int i=0;i您最终将
设置为null,将其传递给
editdestance
,然后尝试设置其中一个条目

如果要在
editDistance
中修改它,则它不能为空


如果
finalY
未在
editDistance
之外使用,则它不应是一个参数:在方法内部声明并分配它。

finalY
设置为null,将其传递到
editDistance
,然后尝试设置其中一个条目

如果要在
editDistance
中修改它,则它不能为空


如果
最终
未在
editDistance
之外使用,则不应将其作为参数:在方法内部声明并分配它。

您应在行上标记错误,以便更容易发现。从计算角度看,该算法相当糟糕,您应尝试使用更高性能的数据结构来编写它。可能比arraylist您需要一个hashmap吗?@SalvatorePreviti让我们先运行它;)我让它运行,我只需要最后实例化它。还有Salvatore我只是为我的高中计算机科学课程写这篇文章,我还没有学过hashmaps是的,你应该用错误标记行以便更容易发现。从计算上来说,算法很糟糕,你应该尝试使用更高性能的数据结构来编写它ures。也许不仅仅是一个数组列表,你还需要一个hashmap吗?@salvatoreprepreviti让我们先运行它;)我运行了它,我只需要最后实例化它。还有Salvatore我只是为我的高中计算机科学课程写这篇文章,我还没有学过hashmap
import java.util.ArrayList;


public class EditDistance 
{

public static void main(String[] args) 
{
    ArrayList<Character> a = new ArrayList<Character>();
    char[] xArray = null;
    char[]yArray = null;
    char[] finalY = null;
    String x = "AACAGTTACC";
    String y = "TAAGGTCA--";
    xArray = x.toCharArray();
    yArray = y.toCharArray();
    a = toArrayList(a , yArray);

    System.out.println(editDistance(a, xArray, finalY, y));


}

public static int editDistance(ArrayList<Character> a, char[] xArray, char[] finalY, String y)
{
    int temp;
    for(int i = 0; i<xArray.length; i++)
    {
        temp = y.indexOf(xArray[i]);
        if(temp != -1)
        {
            finalY[i] = a.get(temp);
            a.remove(temp);
            y = (y.substring(0, temp) + y.substring(temp));
        }

        else if(y.indexOf(xArray[i])==-1)
        {
            xArray[i]='z';
        }           

    }
    for(int j =0; j<xArray.length; j++)
    {
        if(xArray[j]=='z')
        {
            finalY[j]=a.get(j);
        }
    }

    int result = calcScore(finalY, xArray);
    return result;
}

public static ArrayList<Character> toArrayList(ArrayList<Character> a, char[] yArray)
{
    for(int i=0; i<yArray.length;i++)
    {
        a.add(yArray[i]);
    }
    return a;   
}

public static int calcScore(char[] finalY, char[] xArray )
{
    int number = 0;
    for(int i=0; i <xArray.length; i++ )
    {
        if( finalY[i]==(xArray[i]) )
        {

        }
        else if(finalY[i] == '-')
        {
            number++;
            number++;
        }
        else if (finalY[i] != xArray[i])
        {
            number++;
        }
    }

    return number;
}
}