2011-10-26 8 views
0

프로그램을 실행할 때 NullPointerException 오류가 발생합니다. 그 이유를 알 수 없습니다. 정확한 오류는 어떤 도움이 감사Java 프로그램을 실행할 때 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; 
} 
} 

EditDistance.main (EditDistance.java:19)에서 EditDistance.editDistance (EditDistance.java:32)에서 "주"스레드의 예외 java.lang.NullPointerException이 입니다

+1

어떤 줄이 32 줄입니까? –

+0

쉽게 찾을 수 있도록 줄을 오류로 표시해야합니다. – Lycha

+0

연산적으로 알고리즘은 상당히 나쁘다.보다 성능이 뛰어난 데이터 구조를 사용하여 알고리즘을 작성해야한다. 아마 arraylist보다 해시 맵이 필요할까요? –

답변

6

finalY을 null로 설정하고 editDistance으로 전달한 다음 항목 중 하나를 설정하려고 시도합니다.

editDistance에서 수정하려면 null이 아니어야합니다.

finalYeditDistance 외부에서 사용되지 않는 경우 매개 변수가 아니어야합니다. 메서드 내에서 선언하고 할당하십시오.

관련 문제