2011-12-10 2 views
0

이것은 아마도 매우 간단한 문제 일 수 있습니다. 그러나 패턴 배열을 만들려고하고 있는데 몇 가지 문제가 있습니다. 내가 무슨 짓을했는지은 다음과 같습니다 :Java에서 패턴 배열 만들기

Pattern [] aminos = null; 
aminos [0] = Pattern.compile("(gct)|(gcc)|(gca)|(gcg)"); 
aminos [1] = Pattern.compile("(tgt) | (tgc)"); 
aminos [2] = Pattern.compile("(gat) | (gac)"); 

이 내가 그것을 실행하기 전에 어떤 구문 오류 또는 아무것도 없지만, 내가 실행하려고 할 때 "널 포인터 액세스를 말하는 두번째 줄 바꿈 : 변수 aminos가 이 위치에서만 null 일 수 있습니다. " 그런 다음 패턴 배열을 어떻게 만듭니 까? null을 지정하는 것을 게을리 할 때 배열을 초기화하라는 오류가 표시되어 이제 무엇을해야할지 확신이 서지 않습니다.

문자열 배열에 모든 정규식 패턴을 저장 한 다음 필요에 따라 패턴을 형성하는 작은 함수를 작성할 수 있지만 패턴 배열을 만들면 더 편리 할 것입니다.

녀석을 읽어 주셔서 감사합니다! 당신이 시작하는 적당한 크기의 배열을 만들 수 있습니다, 또는

Pattern[] aminos = { 
    Pattern.compile("(gct)|(gcc)|(gca)|(gcg)"), 
    Pattern.compile("(tgt) | (tgc)"), 
    Pattern.compile("(gat) | (gac)") 
}; 

:

+0

문제는 패턴과 관련이 없지만 자바로 된 배열과 관련이 있습니다. 할당하기 전에 배열을 할당해야합니다. – leonbloy

답변

6

여기에 하나의 단순한 접근 방식

를 잘하지만 계산을 얻는 것을 의미
Pattern[] aminos = new Pattern[3]; 

- 첫 번째 버전을 것입니다 자동으로 올바른 크기의 배열을 제공합니다.

또는 대신 List<Pattern>를 사용합니다 (컬렉션 클래스는 일반적으로 배열보다 작업이 더 즐거운) :

List<Pattern> aminos = new ArrayList<Pattern>(); 
aminos.add(Pattern.compile("(gct)|(gcc)|(gca)|(gcg)")); 
aminos.add(Pattern.compile("(tgt) | (tgc)")); 
aminos.add(Pattern.compile("(gat) | (gac)")); 
+0

대단히 감사합니다 Jon! 나는 너의 대답을 받아 들일 것이다. (6 분) – user1058210

0

당신은이 될 것입니다 크기와 배열을 초기화해야합니다. Java에는 유연한 배열이 없습니다. 당신은 당신이 얼마나 많은 Pattern의 알 수없는 경우

Pattern[] aminos = new Pattern[3]; 
aminos [0] = Pattern.compile("(gct)|(gcc)|(gca)|(gcg)"); 
aminos [1] = Pattern.compile("(tgt) | (tgc)"); 
aminos [2] = Pattern.compile("(gat) | (gac)"); 

,이 같은 ArrayList를 사용할 수 있습니다

ArrayList<Pattern> aminos = new ArrayList<Pattern>(); 
aminos.add(Pattern.compile("(gct)|(gcc)|(gca)|(gcg)"); 
... 

ArrayList의 자바에서 배열의 유연한 버전입니다.