2017-10-16 1 views
0

배열에 int 값이 들어있는 프로그램이 있습니다. int 값이 10의 배수인지 여부에 따라 배열에 배열을 반환합니다.이 프로그램은 괜찮지 만 배열에 int 값이 없는지 확인하려면 어떻게해야합니까? 오류가 발생했습니다 (스레드 "main"예외 java.lang.ArrayIndexOutOfBoundsException : 0) 고마워요!내부에 값이없는 java 배열을 반환하십시오.

public class Test1{ 
    public static void main(String[] args){ 
     int[] nums = {}; 
     int[] array = tenRun(nums); 
     int i; 
     for(i = 0; i < array.length - 1; i++) 
     System.out.print(array[i] + ", "); 
     System.out.println(array[i]); 
    } 

    public static int[] tenRun(int[] nums) { 
     int current; 
     int i = 0; 

     while(i < nums.length && nums[i] % 10 != 0) 
     i++; 
     if(i >= nums.length) 
     return nums; 

     current = nums[i]; 
     i++; 

     while(i < nums.length) { 
     if(nums[i] % 10 == 0) 
      current = nums[i]; 
     else 
      nums[i] = current; 
     i++; 
     }              
     return nums; 
    } 
} 

답변

1

우선 {}을 (를) 사용하여 배열을 선언하는 것은 좋지 않습니다.

사람이 tenRun를 호출 할 수 있다면 그때는 아마 이런 공백 또는 null 있는지 확인 것, ([] nums를 INT) :

if(nums == null || nums.length == 0) 

을하지만 당신은 단지 원하기 때문에 때 코드 실행 그것은 null는 아니고, 그리고 비어 있지 때, 이런 식으로 작업을 수행합니다

if(nums != null && nums.length > 0) { 
    //code here 
} 

메인 루프는 같아야을 위해 :

//get rid of int i; 
if(array.length > 0) { 
    System.out.println("{"); 
    for(int i = 0; i < array.length - 1; i++) { 
     System.out.print(array[i] + ", "); 
    } 
    System.out.println("}" + array[i]); 
} else { 
    System.out.println("{}"); 
} 
+0

나는 아직도 주위에 내 머리를 얻을 수 없다, 나는 나 자신을 위해 그것을 복잡하게 걸쳐있을 것 같아요 그것의 배열 검사의 크기를 반환하면 당신이 오류를 방지 할 수 있도록 수표를 포함한다. {8, 40, 7, 9, 30, 6, 4, 40, 1, 9}의 배열이있는 경우 예상대로 8, 40, 40, 40, 30, 30, 30, 40, 40, 40을 반환합니다. 누군가가 배열을 비워두면 {} 여전히 예외를 던집니다. –

+0

@SombraDevon 나는 그것을 이해했다. 손에 fencepost 문제가 있습니다. 루프의 끝 부분에 도달하면 i = array.length -1이되지만, for 루프가 여전히 i를 증가 시키므로 배열 [array.length]을 인쇄하려고합니다. – Meepo

+0

좋아, 내 대답이 업데이트되었습니다. 이제 작동합니다. – Meepo

0

수표없이 배열 요소를 인쇄하는 주말의 코드에서 코드를 인쇄하거나 요소에 액세스하기 전에 배열 길이를 확인하십시오. tenRun이

if(array.length > 0) 
{ int i; 
    for(i = 0; i < array.length - 1; i++) 
     System.out.print(array[i] + ", "); 
} 
else 
{ 
    System.out.println("Received empty array"); 
} 
관련 문제