通过例题练习Java中for循环与while循环的规律

1.规律

无论是数学也好,编程也好,其本质上都是找规律,并且运用规律

for循环的规律是获取循环的次数或范围,以及获取循环的过程

while循环的规律是获取结束条件(可通过先循环后判断的思路,即刚开始可以先不写循环条件),以及获取循环的过程

而这些可以通过泛举来推导
2.例题

例题1(for):逢7过游戏,从任意一个位置报数,只要报的数字是包含7或者7的倍数时都要说:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过的数据

思路:
判断使用哪个循环语句:有范围,使用for循环
开始值:1 结束值:100
过程1:判段1-100数字是否包含7,即判断个位数是否为7或百位数是否为7,即num%10==7||num/10%10==7
     判断范围内是否是7的倍数,即num%7==0

过程2:逢7说过,即打印数字时,跳过该数字而打印"过",然后继续往下执行


main中代码如下:
        for(int i=1;i<=100;i++){
            if(i%7==0 || i%10==7 ||i/10%10==7){
                System.out.println("过");
                continue;
            }
            //注意:有continue不用再写else
            System.out.println(i);

        }

 运行结果如下:(结果较长,只展示部分)

24
25
26
过
过
29
30
31
32
33
34
过
36
过
例题2:回文数:输入一个数字,正着读,倒着读都一样(请通过公式的方式解决)

思路:
判断使用哪个循环语句:范围:无,次数:无,使用while循环
公式:num取个位num%10==num%10,取十位(num/10^1)%10,取百位(num/10^2)%10......
  规律:
  过程1:每次循环,需要多除一次10,再对整体取模
  分析结束条件
  泛举: 123   num
  循环第一次: 个位:123%10==3    num%10
  循环第二次: 十位:(123/10)%10==2  (num/10^1)%10
  循环第三次: 百位:(123/10^2)%10==1  (num/10^2)%10
  循环第四次: 千位:(123/10^3)%10==0    (num/10^3)%10
  我们知道,123是没有千位的,此时123/10^3==0
  即结束条件可分析为:原数值经过循环后不能为0

过程2:将获取到的值倒过来
例:123 倒过来的结果为321
即:
 第一次 3*10           result=0,result=(result+3)*10
 第二次 (3*10+2)*10    result=30,result=(30+2)*10
 第三次 (3*10+2)*10+1  result=320,result=320+1=321  此时2/10=0
 可得出结论:
 result=(result+取余结果)*10 循环进行,直至num/10=0为止,取消乘10,即进行if判断

代码如下:
public class Palindrome_number {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个回文数");
        int num=scan.nextInt();
        //原本的值经由循环后,一直发生变化,需要将原本的值赋给另一个值方便后期比较
        int num1=num;
        //记录每次num取余后的余数
        int ge=0;
        //记录结果
        int result=0;
        while (num!=0){
            ge=num%10;
            num=num/10;
            if(num==0){
                result=result+ge;
                break;
            }else{
                result=(result+ge)*10;
            }
        }
        System.out.println(result);
        //将结果与原本值进行比较
        if (num1==result){
            System.out.println("是一个回文数");
        }else {
            System.out.println("不是一个回文数");
        }
    }
}

结果如下: 

请输入一个回文数
134
431
不是一个回文数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值