打印各种形状
【1】长方形:
- for(int j=1;j<=4;j++){//j:控制行数
- //*********
- for(int i=1;i<=9;i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
【2】距离前面有一定空隙的长方形:
- for(int j=1;j<=4;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=5;i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=9;i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
【3】平行四边形:
- for(int j=1;j<=4;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(9-j);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=9;i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
【4】三角形:
- for(int j=1;j<=4;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(9-j);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=(2*j-1);i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
【5】菱形:
- //上面三角形:
- for(int j=1;j<=4;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(9-j);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=(2*j-1);i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
- //下面三角形:
- for(int j=1;j<=3;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(j+5);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=(7-2*j);i++){//i:控制*的个数
- System.out.print("*");
- }
- //换行:
- System.out.println();
- }
【6】空心菱形:
- //上面三角形:
- for(int j=1;j<=4;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(9-j);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=(2*j-1);i++){//i:控制*的个数
- if(i==1||i==(2*j-1)){
- System.out.print("*");
- }else{
- System.out.print(" ");
- }
- }
- //换行:
- System.out.println();
- }
- //下面三角形:
- for(int j=1;j<=3;j++){//j:控制行数
- //加入空格:
- for(int i=1;i<=(j+5);i++){//i:控制空格的个数
- System.out.print(" ");
- }
- //*********
- for(int i=1;i<=(7-2*j);i++){//i:控制*的个数
- if(i==1||i==(7-2*j)){
- System.out.print("*");
- }else{
- System.out.print(" ");
- }
- }
- //换行:
- System.out.println();
- }
扩展:菱形打印方式2
【1】实心菱形:
- public class TestFor14{
- public static void main(String[] args){
- //先打印出一个正方形,然后某些位置上打印* 某些位置上打印空格:
- int size = 17;
- int startNum = size/2+1;//起始列号
- int endNum = size/2+1;//结束列号
- //引入一个布尔类型的变量---》理解为“开关”
- boolean flag = true;
- for(int j=1;j<=size;j++){
- //*****
- for(int i=1;i<=size;i++){
- if(i>=startNum&&i<=endNum){
- System.out.print("*");
- }else{
- System.out.print(" ");
- }
- }
- //换行
- System.out.println();
- if(endNum==size){
- flag = false;
- }
- if(flag){//flag是true相当于在菱形的上半侧 flag是false相当于在菱形的下半侧
- startNum--;
- endNum++;
- }else{
- startNum++;
- endNum--;
- }
- }
- }
- }
【2】空心菱形:
- public class TestFor14{
- public static void main(String[] args){
- //先打印出一个正方形,然后某些位置上打印* 某些位置上打印空格:
- int size = 17;
- int startNum = size/2+1;//起始列号
- int endNum = size/2+1;//结束列号
- //引入一个布尔类型的变量---》理解为“开关”
- boolean flag = true;
- for(int j=1;j<=size;j++){
- //*****
- for(int i=1;i<=size;i++){
- if(i==startNum||i==endNum){
- System.out.print("*");
- }else{
- System.out.print(" ");
- }
- }
- //换行
- System.out.println();
- if(endNum==size){
- flag = false;
- }
- if(flag){//flag是true相当于在菱形的上半侧 flag是false相当于在菱形的下半侧
- startNum--;
- endNum++;
- }else{
- startNum++;
- endNum--;
- }
- }
- }
- }
三重循环
百钱买百鸡
【1】二重循环可以帮我们解决:二元一次方程组的问题:
- public class TestFor15{
- public static void main(String[] args){
- for(int a=1;a<=5;a++){
- for(int b=3;b<=6;b++){
- if(a+b==7){
- System.out.println(a+"----"+b);
- }
- }
- }
- }
- }
【2】三重循环可以帮我们解决:三元一次方程组的问题:
- public class TestFor16{
- public static void main(String[] args){
- /*
- 百钱买百鸡:
- 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
- 用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
- 数学:
- 设未知数:
- 公鸡:x只
- 母鸡:y只
- 小鸡:z只
- x+y+z=100只
- 5x+3y+z/3=100钱
- 麻烦方式:
- for(int x=1;x<=100;x++){
- for(int y=1;y<=100;y++){
- for(int z=1;z<=100;z++){
- if((x+y+z==100)&&(5*x+3*y+z/3==100)&&(z%3==0)){
- System.out.println(x+"\t"+y+"\t"+z);
- }
- }
- }
- }
- */
- //优化:
- for(int x=1;x<=19;x++){
- for(int y=1;y<=31;y++){
- int z = 100-x-y;
- if((5*x+3*y+z/3==100)&&(z%3==0)){
- System.out.println(x+"\t"+y+"\t"+z);
- }
- }
- }
- }
- }