花式打印菱形图案!!

(一)、首先我们先来看最简单的打印5行5列

*****
*****
*****
*****
*****

具体代码如下

/**
 * 双循环打印菱形图案
 *       *                     A                  *
 *      ***                   BBB                * *
 *     *****                 CCCCC              *   *
 *    *******               DDDDDDD            *     *
 *     *****                 EEEEE              *   *
 *      ***                   FFF                * *
 *       *                     G                  *
 *           
 * @author Monster丶ZF
 * @version1.8
 * @data 2019年4月9日
 * @remakeTODO
 */
public class DoubleForDemo {
	public static void main(String[] args) {
		
		for (int i = 0; i < 5; i++) {       //外层循-环控制行
		for (int j = 0; j < 5; j++) {       //每行打印5个符号
			System.out.print("*");
			
		}
		System.out.println();             // 由外层循环来控制换行
		
	}
		}

}
        ps:这个是比较简单的,只要记住外循环是控制行数的,外层循环是控制列数的。

(二)打印第一种菱形

   *
  ***            首先我们可以分为上部分和下部分分别求
 *****
*******
 *****
  ***
   *
###*   上部分:  可以看出每行都是先打印 #,再打印 *  
##***        #:i = 0  j = 2    行从上往下数,列从左往右数,即第0行时有2列
#*****          i = 1  j = 1    我们一般找i、j间的关系,用i来表示j的最大值
*******         i = 2  j = 0     可以看出 j = 2 - i;
	            i = 3
	         
	         *: i = 0  j = 0
	            i = 1  j = 2   可以看出j = 2 * i;
	            i = 2  j = 4
	            i = 3  j = 6
	    
核心代码如下:      
            for (int i = 0; i < 4; i++) {
			for (int j = 0; j <= 2-i; j++) {
				System.out.print("#");   //不要换行! 兄dei!
			}
			    //打印完#后接着再打印 *
			    
			for (int j = 0; j <=2 * i; j++) {
				System.out.print("*");			
			}      //--> 每次内层循环结束了,下面就打印一次换行
			System.out.println();
			}
------------------------------------------------------------------------------------------------------			
	
	 下部分:也是一样的,	都是每行先打印 #,再打印 *
#*****      #:i = 0  j = 0
##***	       i = 1  j = 1   可以看出  j = i;
###*           i = 2  j = 2
	      
	        *: i = 0  j = 4
	           i = 1  j = 2  可以看出 j = 4 - 2 * i ;    
               i = 3  j = 0	      
	     
核心代码如下:
	      for (int i = 0; i < 3; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print("#");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=4 - 2 * i; j++) {
				System.out.print("*");			
			}
			System.out.println();	
		}

完整的代码如下:把输出" # “改成输出” "就好了

/**
 * 双循环打印菱形图案
 *       *                     A                  *
 *      ***                   BBB                * *
 *     *****                 CCCCC              *   *
 *    *******               DDDDDDD            *     *
 *     *****                 EEEEE              *   *
 *      ***                   FFF                * *
 *       *                     G                  *
 *           
 * @author Monster丶ZF
 * @version1.8
 * @data 2019年4月9日
 * @remakeTODO
 */
public class DoubleForDemo {
	public static void main(String[] args) {
		
		// 行、列-双循环
		//外层循环控制行数、控制换行
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j <= 2-i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=2 * i; j++) {
				System.out.print("*");			
			}
			System.out.println();	
		}
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=4 - 2 * i; j++) {
				System.out.print("*");			
			}
			System.out.println();	
		}
				}

}
 

运行结果如下
花式打印菱形图案!!_第1张图片
(三)打印第二种菱形

   A
  BBB
 CCCCC    和上面一样分为上下两部分,先用#代替空格,不赘述
DDDDDDD    可以先添加 char  ch = 'A';这一行代码在前面;
 EEEEE     然后可以观察到每行打印的字符与行数有关,i不同,则字符不同
  FFF      即内循环结束换行之前来个ch++*换成ch
   G       上部分最后一次内循环结束时,ch++了,然后换行回去判断为假,到了下部分,第一次循环先打印一次ch,即E刚好接上
	      
	
上部分代码:
             char ch = 'A';
		     for (int i = 0; i < 4; i++) {
			    for (int j = 0; j <= 2-i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			   }
			      //打印完#后再打印*
			     for (int j = 0; j <=2 * i; j++) {
				System.out.print((char)(ch));			
			   }
			      ch++;   //每一行打印的字符和行数i有关,打印完一行就++变成下一个字符
			      System.out.println();	//外层循环控制换行
		}

完整的代码如下:

/**
 * 双循环打印菱形图案
 *       *                     A                  *
 *      ***                   BBB                * *
 *     *****                 CCCCC              *   *
 *    *******               DDDDDDD            *     *
 *     *****                 EEEEE              *   *
 *      ***                   FFF                * *
 *       *                     G                  *
 *           
 * @author Monster丶ZF
 * @version1.8
 * @data 2019年4月9日
 * @remakeTODO
 */
public class DoubleForDemo {
	public static void main(String[] args) {
		
		char ch = 'A';
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j <= 2-i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=2 * i; j++) {
				System.out.print((char)(ch));			
			}
			ch++;     //每一行打印的字符和行数i有关
			System.out.println();	//外层循环控制换行
		}
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=4 - 2 * i; j++) {
				System.out.print(ch);			
			}
			ch++;
			System.out.println();	
		}
			}

}
		

运行结果:
花式打印菱形图案!!_第2张图片
(四)打印第三种菱形

   *
  * *       可以观察到保留的*是每一行的最小值或者是最大值
 *   *       即在打印*前判断极值就可以了
*     *
 *   *
  * *
   *	      
  上部分代码:
               for (int i = 0; i < 4; i++) {
			for (int j = 0; j <= 2-i; j++) {
				System.out.print(" ");   //不要换行! 兄dei!
			}
			//打印完#后再打印*
			for (int j = 0; j <=2 * i; j++) {
				if(j == 0 || j == 2 * i){  // j是最小值或者最大值的时候,打印星号,否则的打印空格
					System.out.print("*");
				}else 
					System.out.print(" ");
			//System.out.print("*");			
		}
		System.out.println();	
		}
		下部分也类似

完整代码:

/**
 * 双循环打印菱形图案
 *       *                     A                  *
 *      ***                   BBB                * *
 *     *****                 CCCCC              *   *
 *    *******               DDDDDDD            *     *
 *     *****                 EEEEE              *   *
 *      ***                   FFF                * *
 *       *                     G                  *
 *           
 * @author Monster丶ZF
 * @version1.8
 * @data 2019年4月9日
 * @remakeTODO
 */
public class DoubleForDemo {
	public static void main(String[] args) {
		
		
		for (int i = 0; i < 4; i++) {
		for (int j = 0; j <= 2-i; j++) {
			System.out.print(" ");   //不要换行! 兄dei!
		}
		//打印完#后再打印*
		for (int j = 0; j <=2 * i; j++) {
			if(j == 0 || j == 2 * i){  // j是最小值或者最大值的时候,打印星号,否则的打印空格
				System.out.print("*");
			}else 
				System.out.print(" ");
		//System.out.print("*");			
	}
	System.out.println();	
	}
	for (int i = 0; i < 3; i++) {
	for (int j = 0; j <= i; j++) {
			System.out.print(" ");   //不要换行! 兄dei!
		}
		//打印完#后再打印*
		for (int j = 0; j <=4 - 2 * i; j++) {
			if(j == 0 || j == 4 - 2 * i){  // j是最小值或者最大值的时候,打印星号,否则的打印空格
				System.out.print("*");
			}else 
				System.out.print(" ");
			//System.out.print("*");			
		}
		System.out.println();	
	}
		}

}

运行结果:
花式打印菱形图案!!_第3张图片
感谢您的观看!!!!!!

你可能感兴趣的:(花式打印菱形图案!!)