嵌套循环:一个循环结构包裹另外一个循环,也就是将一个循环结构作为一个循环操作放在循环内部。
例一:编写程序,打印如下图案,要求该图案的行数由用户输入:
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");
}
}
}