Java学习笔记3——循环语句while使用注意事项

来源:互联网 发布:免费手机视频监控软件 编辑:程序博客网 时间:2024/05/16 12:53

今天早上,我试着写了第一个算法:计算101到200之间的质数。

经过一番敲打,激动地点下RUN,可返回值却是100。

计算结果说明,101到200之间的所有数都是质数。

显然不可能。

一开始,以为是while与if语句嵌套时出了问题,可能是算法设计错了,但检查了好几遍,算法没错。

public class isss {int i=2;    int num0 = 0;public boolean check (int sqr){while(i<sqr){int c = sqr%i;if (c==0){i++;num0++;}else{i++;}}if (num0==0){return true;}else{return false;}}


public static void main (String[] args){<span style="white-space:pre"></span>int thisnumber = 101;<span style="white-space:pre"></span>int number = 0;<span style="white-space:pre"></span><span style="font-family: Arial, Helvetica, sans-serif;">isss tool = new isss();</span><span style="white-space:pre"></span><span style="white-space:pre"></span>while(thisnumber<=200){<span style="white-space:pre"></span><span style="white-space:pre"></span>if(tool.check(thisnumber)==true){<span style="white-space:pre"></span>number++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>thisnumber++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>System.out.println(number);<span style="white-space:pre"></span>}



后来想到,可能是变量初始化时出了问题,每次检验都要重新初始化变量,导致结果出错,也就是说,变量声明并赋值的位置错了。

仔细想了想,果然是这样,在修改代码,把isss类中2个变量声明移到check方法体里之后,再次输出,结果为21,正是正确的结果。这样每调用一次方法,变量就会被初始化

原来,在这个例子中,对象被实例化之后,调用相关的方法对对象的数据进行修改,循环完一次之后对象的变量值并不会初始化,这样在检验完101之后,下一次检验时的除数仍然是101,102%101肯定不等于0,……

后来又想出了一种修改方法,那就是在循环体中实例化对象,或者是在循环语句中加入重置变量的语句。

另外,使用循环语句嵌套时,可以分块设计,先设计第一层,再设计外层,逐层设计,可以减小难度。

0 0
原创粉丝点击