关于双重循环的简单应用——打印菱形(没事写的玩的,纯属娱乐)

public class LingXing {

        public static void print(int n){
                int i = 0;
                int j = 0;
                for(i=0; i<n; i++){//前四行
                        for(j=0; j<n+i;j++){
                                if(j < n-i-1)
                                        System.out.print(" ");
                                else
                                        System.out.print("*");
                        }
                        System.out.println();
                }

                for(i=1; i<n; i++){//后三行
                        for(j=0; j<(2*n-i-1); j++){
                                if(j < i)
                                        System.out.print(" ");
                                else
                                        System.out.print("*");
                        }
                        System.out.println();
                }
        }

        public static void main(String[] args) {
                print(4);
        }
}

结果显示:

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

然后有网友问能不能把中间的星号去掉。好吧,有需求就要尽力满足咯。于是我加了两行:

public class LingXing {

        public static void print(int n){
                int i = 0;
                int j = 0;
                for(i=0; i<n; i++)
                {//前四行
                        for(j=0; j<n+i;j++)
                        {
                                if(j < n-i-1)
                                        System.out.print(" ");
                                else if(j==n-i-1||(j==n+i-1))
                                        System.out.print("*");//红色代表新加上去的,下同……
                                else
                                        System.out.print(" ");
                        }
                        System.out.println();
                }

                for(i=1; i<n; i++)
                {//后三行
                        for(j=0; j<(2*n-i-1); j++)
                        {
                                if(j < i)
                                        System.out.print(" ");
                                else if(j==i||(j==2*n-i-2))
                                        System.out.print("*");

                                else
                                        System.out.print(" ");
                        }
                        System.out.println();
                }
        }

        public static void main(String[] args) {
                print(4);
        }
}

结果显示为:

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

然后我就在想:能不能在中间再加一圈菱形。于是:

public class LingXing {

    public static void print(int n){
        int i = 0;
        int j = 0;
        for(i=0; i<n; i++)
        {//前四行
            for(j=0; j<n+i;j++)
            {
                if(j < n-i-1)
                    System.out.print(" ");
                else if(j==n-i-1||(j==n+i-1)||(j==n-i+1)||(j==n+i-3))
                    System.out.print("*");
                else
                    System.out.print(" ");
            }
            System.out.println();
        }

        for(i=1; i<n; i++)
        {//后三行
            for(j=0; j<(2*n-i-1); j++)
            {
                if(j < i)
                    System.out.print(" ");
                else if(j==i||(j==2*n-i-2)||(j==i+2)||(j==2*n-i-4))
                    System.out.print("*");

                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        print(7);
    }
}

显示结果为:

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

在这里我就抛砖引玉了啊,望各位大神提供更好玩的玩法……

时间: 2024-08-01 09:31:33

关于双重循环的简单应用——打印菱形(没事写的玩的,纯属娱乐)的相关文章

for循环简单实例(打印乘法表,打印菱形)

关于for循环的简单应用: 回顾了一下for循环的嵌套: for循环嵌套简单来讲就是一个外圈的for程序里面一个套着一个小的for程序,如果在范围内就来回运行计算,超出了就跳出等待 下面程序为打印九九乘法表: #include <stdio.h> int main() {int i, j, k;k = 0;for (i = 1; i <= 9; i++){for (j = 1; j <=i; j++){k=i*j; printf("%d*%d=%d ", i,j

java08双重循环打印图形

public class Double01 { /** * 若有3个班级各4名学员参赛, * 如何计算每个班级参赛学员的平均分? */ public static void main(String[] args) { // 创建一个2维数组保存数据 double[][] scores = new double[3][4]; // 循环输入学员的成绩 Scanner scanner = new Scanner(System.in); // 定义一个变量 保存每个班级的总分 double sum =

21.使用双重循环打印图形

/* * 打印菱形 * */ public class PrintLX { public static void main(String[] args) { //外层循环,执行五次,每次输出一行* for (int i = 1; i <= 5; i++) { for(int j=1;j<=5-i;j++){ System.out.print(" "); } //内层循环,执行五次,每次输出一个* for (int j = 1;j<=2*i-1;j++){ System

java打印菱形的简单方法

代码: package com.test.demos; public class Diamond { /** * 测试main方法 */ public static void main(String[] args) { printDiamond(10); // 10为对角线长度 } /** * 打印菱形实现方法 */ public static void printDiamond(int size) { size = (size / 2) * 2; // 菱形对角线两侧的宽度是相同的,所以对角线

使用C语言,利用for循环打印菱形(每个相邻菱形都要带空格)

之前看到网上的一些文章介绍如何打印菱形,但是和我当时题目要求的却不一样,网上的代码输出出来时每个相邻菱形并没有带空格. 我现在所介绍的是每个相邻菱形间都带有空格的代码. 习题及代码如下: 用*输出边长为n的实心菱形. * * * * * * * * * printf("请输入一个整数:"); int n = 0; scanf("%d",&n); //打印行数,注意必须是奇数行所以是2n-1 for (int i = 1; i <= 2*n - 1; i

Java50道经典习题-程序19 输入行数打印菱形图案

题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 1 import java.util.Scanner; 2 public class Prog19 { 3 public static void main(String[] args) { 4 Sca

双重循环趣味题

  今天在做一些双重循环打印的趣味题,在这里分享一下我幼稚的代码: 1 /* 2 * 利用双重循环打印 3 * * 4 * *** 5 * ***** 6 * ******* 7 * ********* 8 * ******* 9 * ***** 10 * *** 11 * * 12 */ 13 14 public class Test { 15 16 public static void main(String[] args) { 17 int num1 = 1; 18 int num2 =

打印菱形

Console.WriteLine("请输入一个数"); int i = Convert.ToInt32(Console.ReadLine());//将菱形除了中间最长的一行,分成了上下两部分.中间的一行单独打印 //菱形上半部分 for (int hang = 1; hang < i; hang++) { for (int ge = hang; ge < i; ge++) { //先打空格 Console.Write(".");//依次减少 } for

打印菱形---命令行方式

打印菱形~突然想起一个小的程序,so,共享一下. 实现如下效果: 具体代码: 在main方法中 //用for循环打印菱形 //用i控制行数 //打印上三角形 for(int i=0;i<4;i++){ //打印空格 for(int j=0;j<3-i;j++){ printf(" "); } //打印* for(int k=0;k<2*i+1;k++){ printf("*"); } printf("\n"); } //打印下三