1

这是我正在寻找的示例:

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

  public static void print(String... list){
    for(String str : list){ System.out.println(str); }
  }

我想知道是否有一些内置方法,或者唯一的选择是从索引 2 创建新数组并发送它

4

6 回答 6

1

在 Java 6 或更高版本中,您可以使用Arrays.copyOfRange获取原始数组、初始索引(包括)和最后一个索引(不包括)的方法,并返回指定范围的副本:

if(args.length>2){
    print(Arrays.copyOfRange(args, 2, args.length));
}
于 2013-09-08T12:26:20.307 回答
0

您可以使用Arrays.copyOfRange将数组从索引复制到另一个索引。

于 2013-09-08T12:26:44.063 回答
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]); }
  }
于 2013-09-08T12:29:54.777 回答
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);
}
于 2013-09-08T12:34:17.313 回答
0

如果您担心用于创建新数组实例的资源,请尝试以下操作:

public static void print(int startFrom, String... list){
    ...
}
于 2013-09-08T12:31:13.833 回答
0

Java.util你可以像这样使用它

if(args.length>2){ 
{
   String[] partOfArray = Arrays.copyOfRange(args, 2, args.length - 1);
   print(partOfArray);
}
于 2013-09-08T12:31:19.047 回答