针对for循环和一些流程控制的进阶问题分析

嵌套循环

要了解嵌套循环,首先我们先来一道开胃题
:要我们输入两位数字,取两位数字的最大公约数和最小公倍数

我们看到最大公约数和最小公倍数,首先是先了解什么是约束和什么是倍数。根据百度百科的解释:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
也就是说我们要找两个数,一个可以同时除以他们两个(这个数取最小的),另一个要找到可以被它们整除的最大数(当然这个就是找的最大的)。根据这些我们可以想到用%=0来找出这两个数字。
循环结构呢我们可以用for或者while,当然我会把这两种都写上。
首先呢,我们先使用for来写一下。

public class Problem {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);

        System.out.println("请输入第一个数字:");
        int a = s.nextInt();
        System.out.println("请输入第二个数字:");
        int b = s.nextInt();

        int min =(a <= b)? a: b;
        for(int i =min;i >= 1; i-- ){
            if (a % i == 0 && b % i == 0) {
                System.out.println("最大公约数为:" + i);
                break;//如果不加break出来公约数,循环还会继续
            }
        }
        int max = (a >= b)? a: b;
        for(int j = max;j <= a * b ;j++ ){ 
        //a*b是因为是ab的一个公倍数
            if(j % a == 0 && j % b == 0){
                System.out.println("最小公倍数为:" + j);
                break;
            }
        }
    }

}

while

public class Problem {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);

        System.out.println("请输入第一个数字:");
        int a = s.nextInt();
        System.out.println("请输入第二个数字:");
        int b = s.nextInt();

        int min =(a <= b)? a: b;
        int i = min;
        while(i >= 1){
            if (a % i == 0 && b % i == 0) {
                System.out.println("最大公约数为:" + i);
                break;
            }
        i--;
        }
       int max = (a >= b)? a: b;
        int j = max;
        while(j <= a * b){
            if(j % a == 0 && j % b == 0){
                System.out.println("最小公倍数为:" + j);
                break;
            }
        j++;
        }
    }

}





以上分割线讲的是第一道题,下面进行第二道经典例题
:打印九九乘法表

我先去百度复制一个在这里插入图片描述
这个的计算方法我们可以分为单纯的for嵌套或者单纯的while嵌套,然后由内操纵横向,由外操纵纵向,以这种方式来展开九九乘法表
以下是for嵌套样式:

 public class Problem02 {
    public static void main(String[] args){
 		for (int i = 1;i <= 9;i++){
            for(int j =1;j <= i;j++){
            //此处的for循环中,i每一次进入,j都会从1开始进行循环
                System.out.print(j+"*"+i+"="+(j * i)+"\t");
            }
    		System.out.println();
    	}
    }                
}

while

public class Problem02 {
    public static void main(String[] args) {
        int i = 1;
		//while在此处要重新定义变量
        while(i <= 9){
            int j = 1;//i放在此处可以方便每次进入j时,j都是从1开始往上加的
            while(j <= i){
                System.out.print(j + "*" +i + "=" + (j * i)+"\t");
                j++;
            }
            System.out.println();
            i++;
        }



如何使用for循环嵌套打印出一个三角形

public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            for(int j = 5;j >= i;j--){
                System.out.print(" ");
            }
            for(int j = 1;j <= i;j++){
                System.out.print("*");
            }
            for(int j = 1;j < i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值