Java中的变量

之前写了这样一串代码:

int sum=0;
for (int i=2;i<=1000;i++){
            
            for(int j=1;j<=i/2;j++){
                if(i%j==0){
                    sum+=j;
                }
            }
            if(sum ==i){
                System.out.print(i+" ");
            }
        }

目的是求1-1000内的所有完数, 但是在代码运行之后却什么也没有输出

当时看了好半天也没有发现自己哪里错了,后来在老师的帮助下才发现是我忽略了局部变量的作用域,每次回到外层for循环时,sum的值是不会重新初始化的,从而导致了后面所求的sum值一直都是错的。改正之后代码如下:

for (int i=2;i<=1000;i++){

            int sum=0;
            for(int j=1;j<=i/2;j++){
                if(i%j==0){
                    sum+=j;
                }
            }
            if(sum ==i){
                System.out.print(i+" ");
            }
        }

这样,在每次计算一个新的数字的因子之和时,sum值都会重新初始化为0,解决了上面的问题

经过这道题后我认识到了自己对变量认识的不足,于是去网上又学习了一下各种变量的区别。

全局变量是定义在类的里面,方法和语句块之外,可以在前面加权限修饰符,在访问全局变量时,可以用类名.全局变量名访问,也可以创建类的实例对象后用实例对象名.全局变量名访问

局部变量定义在方法和语句块以内,必须手动初始化后才可以使用,作用域仅限于一对大括号以内,不能加权限修饰符,每次重新进入到方法或者语句块时,该方法或者语句块下的局部变量都会重新初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值