java输出各种三角形(*表示)

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= 5; i++) {

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

最近在尝试做一些当初开始学习JAVA时的一些很基础的题目,同时也把以前没学完的CS61B从头又啃一遍。
很多东西经过长时间的沉淀,再次去领悟的时候获得的内容都与从前大不相同。
不过很惭愧的是,我的能力欠佳,所以一些简单的题目也花费了不小的时间,所以动笔把一些内容记录下来。

上面的代码片源于我第一次做HW0,这是老师布置的一个作业。

输出三角形(衍生出很多类型的三角形)

  1. 以首部代码块为例,这输出的并不是一个三角形,而是一个规格为(长x宽):9x5的矩形。
  2. 等腰直角三角形(长宽同)
  3. 等腰三角形
  4. 倒三角
  5. 上下双拼三角

一:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) { //for循环遍历,这个j表示输出的行数
            for (int i = 1; i <= 5; i++) {//嵌套的循环,这个i表示输出的列数,这里表示一行有5个*
				 System.out.print("* ");}
                System.out.println();
            }
        }
    }

二:(靠左侧)
与输出矩形不同的一点时,如果要输出等腰直角三角形的话,要控制每一行每一列的*数与该行数字相同。
因此,j正常循环,表示输出的三角形的行数。
那么要保证i要与j一致,所以在嵌套的循环中,i将与j做比较。

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {//嵌套中的循环i与j比较,j输出1时,i同时也输出1,保证了每行每列的*数都与该行对应数字相等。

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

还有一种情况是靠右侧的等腰直角三角形,我一开始的想法是,可以理解成输出一个包含(空格+号)的矩形:
以边长为3距离,第一行有2个空格+1个*号,其他行以此类推。
但是输出结果是这样的:输出了一条斜线,且这里有空行,应该是println的原因。

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= ; j++) {
            for (int i = 1; i <= 3-j; i++) {

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

java输出各种三角形(*表示)_第1张图片

改正后:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 3; j++) {
            for (int i = 1; i <= 3-j; i++) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");//空号后面加入了*
            }
            System.out.println();
        }
    }

}

三:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int i = 1; i <= 4-j; i++) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");
            }
            for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
                System.out.print("*");//从空格后接上继续输出
            }
            System.out.println();
        }
    }

}

结果:java输出各种三角形(*表示)_第2张图片

四:
倒三角,也可以从矩形的角度开始理解。
可以分为靠右倒三角,靠左倒三角,等腰倒三角。(全部以四行为例)
靠右倒三角为:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");
            }
           /** for (int x = 1; x <= j; x++) {
                System.out.print(" ");
            }
**/ //这里并不需要空格
            System.out.println();
        }
    }

}

靠左倒三角为:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");//x从2开始,表示在第二行进行遍历循环输出空格,每行依次递增
            }
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");//空格之后输出*,搞清楚这些符号的数字关系
            }
            System.out.println();
        }
    }

}

java输出各种三角形(*表示)_第3张图片

等腰倒三角:

【插曲:在写代码的时候,误打误撞写出了输出平行四边形,代码如下(平行四边形)】:
是为矩形变体

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");
            }//整体输出一个靠右的等腰三角形
            for (int i = 1; i <=3 ; i++) {//矩形变体4x3
                System.out.print("*");
            }
            System.out.println();
        }
    }

}

等腰倒三角:

 package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");
            }
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");
            }//输出一个靠右倒三角
           for(int a=3;a>=j;a--){
               System.out.print("*");
           }//再来一个小规模的靠左倒三角(3行)
            System.out.println();
        }
    }

}

结果:
java输出各种三角形(*表示)_第4张图片

五:上下双拼三角形

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int x = 3; x >= j; x--) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");
            }
            for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
                System.out.print("*");//从空格后接上继续输出
            }
            System.out.println();
        }
        for(int a=1;a<=3;a++){
            for(int b=1;b<=a;b++){
                System.out.print(" ");
            }
            for(int c=3;c>=a;c--){
                System.out.print("*");
            }//递减的规律是列要与行进行对比,而不是简单的数字对比。如果是c>=3,那么就成了平行四边形。
            for(int c=1;c>=a-1;c--){
                System.out.print("*");
            }//这里拼接了一个原有规模(4行)小两次的三角形。
            System.out.println();
        }
    }
}

结果:
java输出各种三角形(*表示)_第5张图片

最后这个代码过于冗杂,一直都是for循环嵌套,后面我会寻找简单的结构优化代码。

你可能感兴趣的:(数据结构,数据结构)