非破坏性地删除数组的第一个元素?

时间:2012-01-29 04:35:01

标签: java c++ arrays

我要做的是将这个C ++函数转换为Java:

void print(int x[], int l)
{
     if (l != 0) {
         cout << x[0] << ",";
     print(x+1,l-1);
     }
}

这是我想要做的,但它不起作用:

void print(int x[])
{
     if (x.length != 0) {
         cout << x[0] << ",";
         print(x + 1); //<--- ERROR!
     }
}

有人有什么想法吗?

2 个答案:

答案 0 :(得分:8)

Java没有与C ++相同的指针。也就是说,您无法沿阵列进一步“移动”数组指针x。我建议将起始索引传递给你的函数:

void print(int x[], int start)
{
    if (start < x.length) {
        if (start > 0) {
            System.out.println(x[start] + ",");
        }
        print(x, start + 1);
    }
}

答案 1 :(得分:0)

在Java中,数组具有length属性,因此您甚至不需要经历任何这些废话:

void print(int[] x)
{
     for (int i = 0; i < x.length; i++)
         System.out.print(x[i] + ",");
}