对于java中变量发生改变,引起的输出结果改变
2015-04-10 21:30
218 查看
最近刚学java时,有一个题目:
打印100到200之间所有的素数
第一判断100
第二次判断101....一直到200
旁边有个同学,写了程序后,发现没有输出结果,她就问我为什么?我当时一看,感觉好像没什么
问题啊,但是运行了,就是什么都没输出,我就郁闷了,当时她的代码是这样的:
句外面,这样suShu的初始值为true,当进入for循环之后,第一次i = 100,因为100符合 if(i % j ==0)的条
件,这样suShu = false的值就变了,break后跳出了循环;在进行下次的循环时,因为suShu的值还是
false,都不符合下面两个if的条件,所以一直到循环结束,suShu的值都还是false,自然也就没有输出值了。
于是,经过修改后代码是这样的:
但我不是凑字数,这两个代码只有一个地方不一样,那就是boolean suShu = true;声明的位置不一样,
上面一个代码是在for语句外面,而下面这个代码是在for语句里面,这样只是因为一个在里面一个在外
面,但是执行后的结构完全不一样,下面这个代码能正确输出100~ 200之间所有素数,这是为什么呢?
因为下面这个代码,进入内层for语句后,当有符合if(i % j ==0)这个条件的,suShu值变成flase,
但是内层循环结束的时候,又回到外层循环时,suShu的值又会被置成true,这样就保证了代码能正确执行。
这是我学习java时遇到的一个问题,希望对java初学者有所帮助。
本文出自 “java中常见问题” 博客,请务必保留此出处http://liwei9455.blog.51cto.com/10104268/1631064
打印100到200之间所有的素数
第一判断100
第二次判断101....一直到200
旁边有个同学,写了程序后,发现没有输出结果,她就问我为什么?我当时一看,感觉好像没什么
问题啊,但是运行了,就是什么都没输出,我就郁闷了,当时她的代码是这样的:
public class Text_SuShu { /** * @param args */ public static void main(String[] args) { boolean suShu = true; for (int i = 100; i <= 200; i++) { for (int j = 2; j< i; j++) { if(i % j ==0) { suShu = false; break; } } if(suShu) { System.out.println(i); } } } }我当时是经过调试了,发现了问题,她把 boolean suShu = true; 这个布尔型变量定义在for循环语
句外面,这样suShu的初始值为true,当进入for循环之后,第一次i = 100,因为100符合 if(i % j ==0)的条
件,这样suShu = false的值就变了,break后跳出了循环;在进行下次的循环时,因为suShu的值还是
false,都不符合下面两个if的条件,所以一直到循环结束,suShu的值都还是false,自然也就没有输出值了。
于是,经过修改后代码是这样的:
public class Text_SuShu { /** * @param args */ public static void main(String[] args) { for (int i = 100; i <= 200; i++) { boolean suShu = true;//位置的改变 for (int j = 2; j< i; j++) { if(i % j ==0) { suShu = false; break; } } if(suShu) { System.out.println(i); } } } }这时如果有人说:博主凑字数的吧,这两个代码基本就差不多。我想说的这两个代码确实差不多,
但我不是凑字数,这两个代码只有一个地方不一样,那就是boolean suShu = true;声明的位置不一样,
上面一个代码是在for语句外面,而下面这个代码是在for语句里面,这样只是因为一个在里面一个在外
面,但是执行后的结构完全不一样,下面这个代码能正确输出100~ 200之间所有素数,这是为什么呢?
因为下面这个代码,进入内层for语句后,当有符合if(i % j ==0)这个条件的,suShu值变成flase,
但是内层循环结束的时候,又回到外层循环时,suShu的值又会被置成true,这样就保证了代码能正确执行。
这是我学习java时遇到的一个问题,希望对java初学者有所帮助。
本文出自 “java中常见问题” 博客,请务必保留此出处http://liwei9455.blog.51cto.com/10104268/1631064
相关文章推荐
- java代码不变引用的包改变引起编译结果的改变
- Java 输入一个数放到变量n中,如果这个数大于0.计算1+2+3+。。。+(n-1)+n的结果, //否则输出 输入的撒数据有误
- java调用.bat,.cmd或执行cmd命令并将输出结果显示的代码
- Java数据库编程中查询结果的表格式输出
- Java中浮点数的输出形式及可能引起的问题
- Java将变量中的数据用“二进制”格式输出的方法
- Java数据库编程中查询结果的输出
- Java程序运行结果输出到一个文件中去,结果显示乱码
- (重要)java都是值传递,与对象形参所指向的对象改变,其实参所指向的对象也相应改变并不矛盾(2011年9.30日一天写的两个程序的总结结果)
- Java代码检查工具Checkstyle常见输出结果
- java三目运算符输出结果
- Java中浮点数的输出形式及可能引起的问题
- Java数据库查询结果的输出
- java改变控制台输入与输出
- Java学习笔记7:改变赋值,输出乘法口诀
- 需要DLL函数输出的结果信息,尽量使用传入参数做为输出变量~!
- Java数据库编程中查询结果的表格式输出
- Java数据库编程中查询结果的表格式输出
- Java数据库编程中查询结果的表格式输出
- Java数据库编程中查询结果的表格式输出