2014-10-14 5 views
-1

배열과 관련된 자바에 대한 매우 일반적인 질문 인 것 같습니다.하지만이 모든 경우에 맞는 답을 찾지 못했습니다.for 루프에서 두 배열의 요소 비교 (java)?

이 응용 프로그램에서는 사용자가 지정한 텍스트를 '암호화'하는 프로그램을 만들려고합니다. 예 : user는 'a b c'문자를주고 프로그램은 '@ # $'문자를 반환합니다. 하지만 코드에 몇 가지 문제가 있습니다. "pozita [i] = j;". 이 코드가 작동하지 않는 이유는 무엇입니까? 그것은 나에게 오류를주지 않는다? 아니면 어쨌든 "새로운 pozita [i]"또는 그와 비슷한 것으로 그것을하고 있습니까?

글쎄, 누군가가 나를 도울 수 있다면 기쁠거야. 나는 잠시 붙어있다. 미리 감사드립니다! :)

import java.util.*; 
import javax.swing.*; 
import java.awt.*; 

public class TestPerProgram extends JFrame 
{ 
    char[] alfabeti = {'a','b','c','r','n','t'}; 
    char[] kodimi = {'@','#','%','*','^','$'}; 
    int[] pozita; 
    //Scanner merr = new Scanner(System.in); 

    String fn = JOptionPane.showInputDialog("Jepe tekstin:"); 
    char[] input = fn.toCharArray(); 

    void numro() 
    { 
     for (int i=0; i<=input.length; i++) 
     { 
      for(int j=0; j<=input.length; j++) 
      { 
       if(alfabeti[j] == input[i]) 
       { 
        pozita[i] = j; 
        System.out.println(pozita[i]); 
       } 
      } 
     } 

     /* 
     for (int k=0; k<=input.length; k++) 
     { 
      System.out.println(pozita[k]); 
     } 
     */ 

    } 

    public static void main(String[] args) 
    { 
     TestPerProgram pjesa = new TestPerProgram(); 

     pjesa.numro(); 

    } 

} 
+3

* 오류가 있습니까? 대답이예요. 읽어. 그런 다음 http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it을 읽으십시오. –

답변

1

나는 당신의 알고리즘이 작동하도록되어 방법에 대한 100 % 분명 아니지만, 당신이 라인을

pozita[i] = j; 

을 대체 할 수 있습니다 보인다

pozita[i] = kodimi[j]; 

현재 대체 문자가 아닌 pozita에 일치하는 색인 ​​만 작성하고 있습니다. 내 가정이 맞다면

, 당신은 또한

int[] pozita; 

char[] pozita; 

로 변경하고 길이 input.Length의 배열을 초기화 할 것입니다.

1

pozita 어레이를 인스턴스화 한 적이 없습니다. pozita을 인스턴스화하면 pozita의 값을 다시 정의 할 수 있습니다. jposita[i]을 지정하면 posita이 null입니다.

과 같이 수행

int posita[] = new int[20]

을하고 다음 크기를 설정하지 않으려면 그냥 ArrayList를 사용합니다.

0

변수 pozita에 메모리를 할당하도록 요청하지 않았거나 달리 인스턴스화했습니다. 현재 사용하고있는 방식대로 사용자로부터 입력을 검색 한 후 어느 시점에 pozita[] = new int[input.length];을 작성합니다.