第一章第六天Java基础语法 嵌套循环

嵌套循环:一个循环结构包裹另外一个循环,也就是将一个循环结构作为一个循环操作放在循环内部。

例一:编写程序,打印如下图案,要求该图案的行数由用户输入:

   1

   1  2

   1  2  3

   1  2  3  4

   1  2  3  4  5

public class Day08_1 {
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            for(int j = 1;j <= i;j++){
                System.out.print(j + "\t");
            }
            System.out.println();
        }
    }
}

例二:我国古代数学家张丘建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:5文钱可以买1只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么公鸡、母鸡、雏鸡各有多少只?请编程实现。

分析思路:假设公鸡i,母鸡j ,雏鸡k

I+j+k=100;

5*i+3*j+k/3=100 i<=20  j<=33

当i=1,j=1,k=

当i=2,j=1,k=

当i=2,j=2,k=?

public class Day08_2 {
    public static void main(String[] args){
        int a,b,c;
        for(a = 0;a <=20;a++){
            for(b = 0;b <=33;b++){
                c = 100 - a - b;
                if(5 * a + 3 * b + c / 3 == 100&&a + b + c == 100&&c % 3 == 0){
                    System.out.println("公鸡:" + a +  "\t" + "母鸡:" + b + "\t" + "雏鸡:" + c);
                }
            }
        }
    }
}

例3:假设一个简单的在ATM上取款的过程如下:首先提示用户输入密码(password),最多只能输入三次,超过三次则提示用户“密码错误,请取卡”,结束交易。如果用户密码正确,再提示用户输入金额(amount),ATM只能输入100元的纸币,一次取钱数要求最低0元,最高1000元。如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户“交易完成,请取卡!”,否则提示用户重新输入金额。假设密码是111111,则呈现运行结果如下:

请输入密码:123456

请输入密码:111111

请输入金额:789

您输入金额不合法,请重新输入:2000

您输入金额不合法,请重新输入:600

您取了600元

交易完成,请取卡!

import java.util.Scanner;
public class Day08_3 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入密码:");
            int password = input.nextInt();
            if(password == 111111){
                System.out.println("请输入金额:");
                int amount = input.nextInt();
                while(!(amount%100 == 0&&amount >=0&&amount <=1000)){
                    System.out.println("您输入金额不合法,请重新输入:");
                    amount = input.nextInt();
                }
                if(amount%100 == 0&&amount >=0&&amount <=1000){
                    System.out.println("您取了"  + amount +"元");
                    System.out.println("交易完成,请取卡!");
                    return;
                }
            }
        }
        System.out.println("密码错误,请取卡");
    }
}

例四:输入行数,打印菱形,要求如下:

  • 从控制台输入菱形的高度(行数)。如果用户输入的行数合法(奇数),则打印菱形;否则提示用户输入奇数。
  • 假设用户输入的行数为rows,则每行字符*的个数依次为1、3、5、7.。。、rows、。。。、7、5、3、1,程序运行结果如下所示:

请输入菱形的行数:4

请输入奇数:6

请输入奇数:7

               *

            *  *  *

         *  *  *  *  *

      *  *  *  *  *  *  *

         *  *  *  *  *

            *  *  *

               *

import java.util.Scanner;
public class Day08_4 {
    public static void main(String[] args) {
        int rows = 0;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入菱形行数:");
        rows = input.nextInt();
        while (rows % 2 == 0) {
            System.out.println("请输入奇数:");
            rows = input.nextInt();
        }
        int n = (rows + 1) / 2;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
        for (int i = n - 1; i >= 1; i--) {
            for (int j = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k < 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40115919/article/details/81254941
今日推荐