안드로이드 개발 질문/답변
(글 수 45,052)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String arg ="181,6,AFKN 援ъ뼱�쁺�뼱 = New American colloquial expressions,744 �뿉68a:175,5,怨쇳븰怨� �씤媛� = Science and human,400 �젙66�꽦:165,5,�뙆�룞愿묓븰 = Fundamentals of wave optics,425 議�73�뀓:147,5,AUTO CAD 2000,028.63 �옣88a V.2:11,6,�뵒�봽�? = Defran: 媛뺥샇�쁺 �벂�쟾 �뙋�?吏� �옣�렪�냼�꽕. 2,813.6 媛�95�꽬 V.2:";
String[][] cube = null;
int j=0;
j = arg.split(":").length;
String[] cube1 ;
cube1 = arg.split(":");
// Toast.makeText(this, j, Toast.LENGTH_SHORT);
for(int i=0; i<=j;i++){
String[] cube2 = cube1[i].split(",");
for(int k=0;k<=cube2.length;k++){
cube[i][k] = cube2[k]; <---------------현재 이 부분에서 에러 난다고 나옵니다.
cube2 = null;
}
}
Toast.makeText(this,cube[0][0],Toast.LENGTH_SHORT).show();
Toast.makeText(this,cube[1][0],Toast.LENGTH_SHORT).show();
Toast.makeText(this,cube[2][0],Toast.LENGTH_SHORT).show();
Toast.makeText(this,cube[3][0],Toast.LENGTH_SHORT).show();
// Toast.makeText(this,cube1[4],Toast.LENGTH_SHORT).show();
setContentView(R.layout.main);
}
현재 arg의 내용을 split를 통해서 쪼개고 있습니다.
처음 큐브1 의경우는 아무 이상없이 쪼개지나
큐브2를 쪼개는 과정에서 큐브1을 직접 cube[1] 이런식으로 지정하면 정상적으로 되나
cube[i]로 입력을 하니 ArrayIndexoutofbounds의 에러가 납니다
그래서 다시 소스를 변경하여 지금의 소스로 왔는데
현재 널 포인트 문제가 생기네요;;
어찌 조언좀 부탁드릴게요;ㅠㅠ
2011.05.04 17:26:54
2차원 배열의 초기화를 하지 않아서 문제가 생긴듯 합니다.
초기화를 하지 않는 상태에서 값을 넣을려고 하니...오류가 발생한거구요...
값을 넣기 전에 2차원 배열의 초기화를 하시면 아마 오류가 없을 듯 합니다.
참고>
String[][] Temp = new String[50][50]
2011.05.04 17:59:40
ArrayIndexoutofbounds은 Index가 배열의 길이를 초과해서 나오는겁니다. 다시 설명 드리면
배열에 a[0],a[1],a[2]번째에만 데이터가 있는데 a[3]번째의 데이터를 가져오려고 하면 에러가 발생
합니다. for문중에 i<=j 와 k<=cube2.length에서 = 을 빼주세요. 그리고 널포인트는 위에분들이 설명해 주셨네요.




일단 뭘 넣으려면 공간이 있어야 되는데... 지금 cube에 공간이 할당되어있지 않잖아요? cube1의 경우에는 split으로 리턴되는 공간이 할당되므로 문제가 없는건데.... 일단 꼭 이 방식대로 해야겠다면 String[][] cube = new String[100][100]; 이런식으로 공간을 미리 할당 해 줘야 합니다.. 근데 이렇게 하다보면 공간의 낭비가 생기게 되고요. 다른 방법을 생각 해 보세요.