简体   繁体   English

运行Java程序时出现NullPointerException错误

[英]NullPointerException error when running a Java program

NullPointerException error when running the program, I cant figure out why. 运行程序时出现NullPointerException错误,我无法弄清原因。 the exact error is Exception in thread "main" java.lang.NullPointerException at EditDistance.editDistance(EditDistance.java:32) at EditDistance.main(EditDistance.java:19) 确切的错误是EditDistance.main(EditDistance.java:19)的EditDistance.editDistance(EditDistance.java:32)处的线程“ main”中的异常java.lang.NullPointerException

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;
}
}

any help is appreciated 任何帮助表示赞赏

You set finalY to null, pass it to editDistance , then attempt to set one of its entries. 您将finalY设置为null,将其传递给editDistance ,然后尝试设置其条目之一。

If you want to modify it in editDistance , it must not be null. 如果要在editDistance进行修改,则不能为null。

If finalY is not used outside of editDistance , it should not be a parameter: declare and allocate it inside the method. 如果finalY不之外使用editDistance ,它不应该是一个参数:声明并分配它的方法内。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM