为了账号安全,请及时绑定邮箱和手机立即绑定

意思一样的代码,放的位置不同,出现的结果不一样,为什么?

意思一样的代码,放的位置不同,出现的结果不一样,为什么?

慕娘3957038 2016-12-18 09:37:50
第一种方式public static void main(String[] args) { int a=1; int b=1;                for(;b<=9;b++){ for(;a<=b;a++){ System.out.print(a+"*"+b+"="+(a*b)+'\t'); } System.out.println(); } }第二种方式:public static void main(String[] args) { for(int b=1;b<=9;b++){            for(int a=1;a<=b;a++){            System.out.print(a+"*"+b+"="+(a*b)+"\t");                       }            System.out.print("\n"); } }
查看完整描述

3 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

第一种方式的int a=1;应该放在外层循环里面,每次循环a的值赋值为1

public static void main(String[] args) {
int b=1;
    for(;b<=9;b++){
        int a=1;
for(;a<=b;a++){
System.out.print(a+"*"+b+"="+(a*b)+'\t');
}
System.out.println();
}
}


查看完整回答
2 反对 回复 2016-12-18
?
smilefriend

TA贡献4条经验 获得超1个赞

第二个for,在循环的时候,每次都会将a初始化为1,如果将a的初始化放在第一层for的外头,那么,第二个for循环就不会每次都将a初始化为1,而是沿用上次a赋值的结果。于是,产生了结果差异。咋一看是一样的代码,实际上是有区别的。在循环中对变量赋值,情况复杂多变,应该注意此种情况

查看完整回答
1 反对 回复 2016-12-18
?
lxlacie

TA贡献35条经验 获得超11个赞

运行结果不同,这是局部变量与全局变量的区别造成的。

在程序中,会根据变量的有效范围将变量分为成员变量和局部变量,通常类的属性成为累的全局变量(成员变量),成员变量在整个类中都有效,在类的方法体中定义的变量称为局部变量,局部变量只在当前代码体中有效不能用于类的其他方法中。成员变量可与局部变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效,只取局部变量的值。

你举得这两个例子正是全局变量与局部变量的典例,第一种方式中的变量a,b都是全局变量,而第二种方式中的变量a,b都是局部变量,第一个for循环每进行一次赋值,内嵌的第二个for循环就会对局部变量a,进行一次等于1的重新赋值。所以两种方式就会出现不同的结果。


查看完整回答
反对 回复 2016-12-18
  • 3 回答
  • 2 关注
  • 1768 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信