Java报错‘cannot find symbol length’:统计数组中9的出现次数遇问题
解决数组统计9的次数时出现的"cannot find symbol length"错误
嘿,我来帮你拆解这个问题!你遇到的cannot find symbol length错误,核心原因肯定是你用来存储9的那个“新数组”,并不是Java的基础数组类型,或者变量名搞错了——毕竟你说循环里用原数组的length没问题,说明你对数组的length属性用法是清楚的。
最可能的两种原因:
你用了集合类而非数组
比如你可能用了ArrayList<Integer>来存9,而集合类的长度是通过size()方法获取的,不是length属性!举个错误示例:// 错误写法:ArrayList没有length属性 ArrayList<Integer> nineList = new ArrayList<>(); for (int num : originalArray) { if (num == 9) { nineList.add(num); } } return nineList.length; // 这里必然报错!改成
nineList.size()就正常了。变量名不匹配
比如你声明的新数组变量是nineArray,但返回的时候写成了nines.length,编译器找不到nines这个变量,自然也找不到它的length属性。仔细检查变量名拼写是否一致就行。
额外建议:其实不需要创建新数组
统计元素出现次数,用计数器比创建新数组更高效,还能避免这类数组/集合的混淆问题:
public int countNines(int[] nums) { int count = 0; // 增强for循环遍历数组 for (int num : nums) { if (num == 9) { count++; } } return count; }
这种写法不需要额外开辟内存存新数组,代码也更简洁。
内容的提问来源于stack exchange,提问作者Sebastjan
相关产品推荐
相关产品推荐

