「你值得拥有」3个加深对 循环结构 理解的典型案例

前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书

1,打印九九乘法表

打印格式如下:

分析

实现九九乘法表要从结构和计算两个角度进行切入。

首先看结构,它是一个直角三角形,可以通过两层循环的嵌套来实现形状问题和结构问题。

关键代码如下:

for(int i=;i<=9;i++){
    for(int j=1;j<=i;j++){
        System.out.format("*");//输出用了format,不换行显示  
    }
    System.out.println();
}

其次,通过结构中代码的分析可以看出循环变量“i” 和 “j” 都是从1 到9 按照规律进行循环更新值,关键代码如下:

for(int i=1;i<=9;i++){
    for(iint j=1;j<=i;j++){
        System.out.format("%d*%d=%-4d",j,i,(i*j));//注意格式
    }
    System.out.println();
}

在嵌套循环中可以通过Java 提供的标签功能快速从内部循环跳到外层某一个定义好标签的循环,结合“break”和“continue”使用。通过如下代码体会嵌套循环中标签的用法。

public class Demo{
    public static void main(String[] args){
        myLoop:
           for(int i=0;i<3;i++){
               for(int j=0;j<3;j++){
                   if(i%2==0){
                       System.out.println("*"+i);
                       break myLoop;
                   }
                   System.out.println("$"+i);
               }
           }
    }
}//在比价复杂的嵌套循环结构中会用到标签,以便简化部分逻辑。  

2,斐波拉契数列

维基百科上关于斐波那契数列的说明如下:斐波那契数列由0 和 1 开始,之后的斐波 那契数就是由之前的两数相加而得出,前面几个斐波那契数是0,1,1,2,3,5,8,13,21, 34,55,89,144,233 …… 特别指出:0 不是第 1 项,而是第0项。

用程序实现斐波那契数列打印的方法之一是用循环结构。以下代码实现了前 20 个斐波 那契数的打印。

int n1 = 1, n2 = 1, num = 0; 
// 先输出前 3 个数
System.out.format ("%d-5% -5%d -5d%",0,n1,n2);
for (int i = 0; i< 9;i++){ //输出后续的 8 个规律数
   num = n1 + n2; //获得前两个数之和,存人 num 
   n1 = n2; //前一个数成为下一个数 
   n2 = num; //下一个数成为之前两数之和 
   System.out.format ("*-5a", num); //打印两数之和 
}
//输出结果为:
输出结果为:“0 1 1 2 3 5 8 13 21 34 55 “。建议通 过断点调试观察变量值和输出内容的变化。  

3.解析五位正整数,求个位、十位、百位、千位、万位之和

通过循环取余数和整除取整可以达到目的。比如整数 358,通过取余 10 可以得到 8 (即个位数),通过整除 10、从 358 变为 35,方便下次继续取余 10,获取个位数。通过以下 示例代码可以直观了解通过循环解决此类问题的思路。

import java.util.Scanner; 
public class Demo{
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int num=0,sum=0;
        System.out.print("请输入五位数及以下的正整数");
        num=input.nextInt();
        if(num<0||num>=100000){//判断有效性
            System.out.println("范围超出,程序将推出");
            return ;
        }
        while(num>0){
             int temp=num%10;//获取个位数
             sum+=temp;//进行累加
             num/=10;//整除
        }
        System.out.println("位数之和是:"+sum);
    }
}
 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阔升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值