数组在现场初始化

时间:2014-07-03 11:05:35

标签: java

你能不能理解为什么这段代码因为array667({6,6,2,6})而无效。但是如果对整行进行评论并取消注释现在评论的内容,那么一切正常。

坦率地说,我从http://codingbat.com/prob/p110019那里得到了这个例子。所以,这是从他们的练习中获取的。我不会发明这一点,但现在我很困惑为什么这不起作用?

public class Test {
    public static void main(String[] args){
        //int[] a = {6, 6, 2, 6};
        //System.out.println(array667(a));
        System.out.println(array667({6, 6, 2, 6}));
    }

    public static int array667(int[] nums) {
        int count = 0;
        for (int i = 0; i < nums.length-1; i++){
            if (nums[i] == 6 && (nums[i+1] == 6 || nums[i+1]==7)){
                count++;
            }
        }
        return count;
    }
}

2 个答案:

答案 0 :(得分:2)

在传递内联时,您必须告诉数组的类型。

array667(new int[] {6, 6, 2, 6})

在初始化时,这是第一种情况,左侧有类型。

有关示例的清晰说明,请您点击这里

https://stackoverflow.com/a/19558179/1927832

答案 1 :(得分:2)

您没有创建数组对象 -

System.out.println(array667(new int[]{6, 6, 2, 6}));