2013-09-08 3 views
1

에서하는 방법에 배열을 보내는 것은 내가 무엇을 찾고 있어요 예입니다 옵션은 인덱스 2에서 새로운 배열을 생성하고 전송하는 것입니다.어떻게 특정 위치 여기

답변

1

Java 6 이상에서는 원래 배열, 초기 색인 (포함) 및 마지막 색인 (포함되지 않음)을 취하는 Arrays.copyOfRange 메소드를 사용할 수 있습니다. 지정된 범위의 사본 :

if(args.length>2){ 
    print(Arrays.copyOfRange(args, 2, args.length)); 
} 
+0

감사합니다. 어떻게 'args.length-1'이 아닌가요? 'to '인수는 포함되어 있지 않습니다. – Nir

+0

@nir 맞습니다. 의사는 'to'가 포함되어 있지 않다고 말합니다. – dasblinkenlight

0

Arrays.copyOfRange을 사용하여 인덱스에서 다른 인덱스로 배열을 복사 할 수 있습니다. 당신이 정말 새로운 배열을 생성하지 않으려면 새로운 배열 인스턴스를 생성에 소요되는 자원에 대해 걱정하는 경우

+0

dasblinkenlight이 (가) 이길 수 있습니다. –

0

또는, 당신은 당신의 print()

public static void main(String[] args) { 
    if(args.length>2){ print(0,1,args); } 
    else { print(0, args.length-1,args); } 
    } 

    //start and end are inclusive 
    public static void print(int start, int end, String... list){ 
    for(int i=start; i< end+1 ; i++){ 
     System.out.println(list[i]); } 
    } 
0

을 수정할 수 있습니다,이 시도 :

public static void print(int startFrom, String... list){ 
    ... 
} 
0

if(args.length>2){ 
{ 
    String[] partOfArray = Arrays.copyOfRange(args, 2, args.length - 1); 
    print(partOfArray); 
} 
처럼 Java.util로 사용할 수 있습니다
0

print 메서드를 오버로드하는 방법도 범위 값을 사용 하시겠습니까?

static public void main(String[] args) throws Exception { 
    String[] arr = { "0", "1", "2", "3" }; 
    if (arr.length > 2) { 
     print(2, arr); 
    } else { 
     print(arr); 
    } 
} 

public static void print(int start, String... list) { 
    for (int i = start; i < list.length; i++) { 
     System.out.println(list[i]); 
    } 
} 

public static void print(String... list) { 
    print(0, list); 
}