2016-02-29 80 views
-1

编写一个静态方法方法调用longCount,它传递一个字符串数组,并返回数组中长度超过10个字符的字符串数(因此方法返回类型是int)。您必须在解决方案中使用for-each循环。需要hlelp for for each和数组java

这是我想出来的,虽然它在我提交时仍然没有编译。

public static int longCount(int[] data){ 
    int count = 0; 
    for(int n : data){ 
    if(data[n]>10) 
    count++; 
} 
    return count; 
} 
+0

'如果(数据[N]> 10)'你不'不想'数据[n]'在这里,你想'n'。 'n'不是数组的索引,它是数组中的一个元素。 –

+6

你的方法应该接受'String []',而不是'int []'。 –

+0

如果使用'n'作为循环的索引,'data [n]'就会工作。编辑:Derp,它不会抛出一个编译错误,只是一个错误的结果(或如果n <0 ...指数超出了界限的异常)。 –

回答

3

变化

if(data[n]>10) 

if(n>10) 

for-each loop你得到(不是指数)。

+1

这可能是真的,但它不会导致*编译*错误。 – radoh

7

您的方法应该接受String[]而不是int[]。这可能是导致编译器错误的原因(但很难说,因为您不报告错误消息。)此外,数组的循环变量将循环变量绑定到每个数组,而不是每个索引。我已经重写你的方法为:

public static int longCount(String[] data) { 
    int count = 0; 
    for (String s : data){ 
     if (s.length() > 10) { 
      count++; 
     } 
    } 
    return count; 
} 

为了防止数组元素是null,你可能会考虑更改if条件

if (s != null && s.length() > 10) {