2 lzyno1 lzyno1 于 2017.01.12 18:42 提问

return n为啥是错的啊?代码为啥不能执行?、??代码:找到数组中的0;替换成1;返回找到0的个数

public class Test03 {
public static void main(String[] args) {
int []shuzu={23,20,31,504,801};
shuchu(shuzu);
int n=find(shuzu);
System.out.println("0的个数n:"+n);
shuchu(shuzu);
}
public static int find (int []group){
for(int i=0;i<group.length;i++){
int n=0;
if(group[i]==0){
group[i]=1;
n++;
}
}
return n;
}
public static void shuchu(int []group){
for(int i=0;i<group.length;i++){
System.out.print(group[i]+" ");

    }System.out.println();
}

}

3个回答

u011547347
u011547347   2017.01.12 19:28

变量的作用域问题,n的作用域在for循环内

bjjoy2009
bjjoy2009   2017.01.12 18:51

int n=0 应该放到循环外边?

bjjoy2009
bjjoy2009 回复lzyno1: int []shuzu={23,20,31,504,801}; 换乘int []shuzu={23,0,31,504,0}; 看看结果是不是2
11 个月之前 回复
bjjoy2009
bjjoy2009 回复lzyno1: public static int find (int []group){int n=0; for(int i=0;i<group.length;i++){ if(group[i]==0){ group[i]=1; n++; } } return n; }
11 个月之前 回复
lzyno1
lzyno1 回复bjjoy2009: 那应该咋改啊?
11 个月之前 回复
bjjoy2009
bjjoy2009 回复lzyno1: 那个数组里边没有0,n肯定一直是0,逻辑是对的。fourth_leaf回答作用域是对的,n循环外不可见,是编译时错误
11 个月之前 回复
lzyno1
lzyno1 放外面循环时n就不加了,n始终为0
11 个月之前 回复
sun1021873926
sun1021873926   Ds   Rxr 2017.01.12 20:56

return n时n必须在find函数的作用域内。当你把n写在for循环外时,return n; n始终为0,那么你就该检查你的循环条件以及if判断条件了,比如group数组的元素个数为0,或者group数组中没有值为0的元素值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!